diff --git a/src/pilot.c b/src/pilot.c
index 9d16308..3280350 100644
--- a/src/pilot.c
+++ b/src/pilot.c
@@ -1440,8 +1440,12 @@ int pilot_rmMissionCargo(Pilot* pilot, unsigned int cargo_id, int jettison) {
       sizeof(PilotCommodity) * (pilot->ncommodities-i-1));
 
   pilot->ncommodities--;
-  pilot->commodities = realloc(pilot->commodities,
-      sizeof(PilotCommodity) * pilot->ncommodities);
+  if(pilot->ncommodities == 0) {
+    free(pilot->commodities);
+    pilot->commodities = NULL;
+  } else
+    pilot->commodities = realloc(pilot->commodities,
+        sizeof(PilotCommodity) * pilot->ncommodities);
 
   return 0;
 }
@@ -1468,8 +1472,13 @@ int pilot_rmCargo(Pilot* pilot, Commodity* cargo, int quantity) {
         memmove(pilot->commodities+i, pilot->commodities+i+1,
                 sizeof(PilotCommodity)*(pilot->ncommodities-i));
         pilot->ncommodities--;
-        pilot->commodities = realloc(pilot->commodities,
-                                     sizeof(PilotCommodity)*pilot->ncommodities);
+        if(pilot->ncommodities == 0) {
+          free(pilot->commodities);
+          pilot->commodities = NULL;
+        }
+        else
+          pilot->commodities = realloc(pilot->commodities,
+              sizeof(PilotCommodity) * pilot->ncommodities);
       } else
         pilot->commodities[i].quantity -= q;