home · contact · privacy
Fixed bug that freed non-existing map objects, triggered segfaults.
authorChristian Heller <c.heller@plomlompom.de>
Sat, 31 Aug 2013 13:46:12 +0000 (15:46 +0200)
committerChristian Heller <c.heller@plomlompom.de>
Sat, 31 Aug 2013 13:46:12 +0000 (15:46 +0200)
src/map_objects.c

index 28d9b146864e70ece8f99ebd3c0c81255c3ed1b6..d220556907d29c0576531a6fd964d078e5d04693 100644 (file)
@@ -308,10 +308,11 @@ extern void * build_map_objects(struct World * world, void * start, char def_id,
 
 extern void free_items(struct Item * item)
 {
-    if (0 != item->map_obj.next)
+    if (0 == item)
     {
-        free_items((struct Item *) item->map_obj.next);
+        return;
     }
+    free_items((struct Item *) item->map_obj.next);
     free(item);
 }
 
@@ -319,10 +320,11 @@ extern void free_items(struct Item * item)
 
 extern void free_monsters(struct Monster * monster)
 {
-    if (0 != monster->map_obj.next)
+    if (0 == monster)
     {
-        free_monsters((struct Monster *) monster->map_obj.next);
+        return;
     }
+    free_monsters((struct Monster *) monster->map_obj.next);
     free(monster);
 }