From 1c7bd75537bf01f2af7393ed4a670e8d2e8d1a86 Mon Sep 17 00:00:00 2001
From: Allanis <allanis@saracraft.net>
Date: Wed, 31 Jul 2013 20:24:14 +0100
Subject: [PATCH] [Fix] Let's not segfault if a mission is not found in the
 stack when saving. :/

---
 src/player.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/player.c b/src/player.c
index 2f2ac9b..e0c8e27 100644
--- a/src/player.c
+++ b/src/player.c
@@ -1584,6 +1584,7 @@ int player_missionAlreadyDone(int id) {
 /* Save the player in a freaking xmlfile. */
 int player_save(xmlTextWriterPtr writer) {
   int i;
+  MissionData* m;
 
   xmlw_startElem(writer, "player");
   xmlw_attr(writer, "name", player_name);
@@ -1601,10 +1602,14 @@ int player_save(xmlTextWriterPtr writer) {
 
   xmlw_endElem(writer); /* Player. */
 
+  /* Mission the player has done. */
   xmlw_startElem(writer, "missions_done");
 
-  for(i = 0; i < missions_ndone; i++)
-    xmlw_elem(writer, "done", mission_get(missions_done[i])->name);
+  for(i = 0; i < missions_ndone; i++) {
+    m = mission_get(missions_done[i]);
+    if(m != NULL) /* In case mission name changes between versions. */
+      xmlw_elem(writer, "done", mission_get(missions_done[i])->name);
+  }
 
   xmlw_endElem(writer); /* missions_done. */