Index: code/missionui/missionshipchoice.cpp
===================================================================
--- code/missionui/missionshipchoice.cpp	(revision 9657)
+++ code/missionui/missionshipchoice.cpp	(working copy)
@@ -2919,6 +2919,10 @@
 
 	for ( i = 0; i < MAX_WSS_SLOTS; i++ ) {
 		Wss_slots[i].ship_class = -1;
+		for ( j = 0; j < MAX_SHIP_WEAPONS; j++ ) {
+			Wss_slots[i].wep[j] = 0;
+			Wss_slots[i].wep_count[j] = 0;
+		}
 	}
 
 	for ( i = 0; i < MAX_WING_BLOCKS; i++ ) {
Index: code/missionui/missionscreencommon.cpp
===================================================================
--- code/missionui/missionscreencommon.cpp	(revision 9657)
+++ code/missionui/missionscreencommon.cpp	(working copy)
@@ -1113,7 +1113,7 @@
 		Wss_slots[i].ship_class = slot->ship_class;
 
 		for ( j = 0; j < MAX_SHIP_WEAPONS; j++ ) {
-			if ((slot->wep[j] >= 0) && (slot->wep[j] < MAX_WEAPON_TYPES)) {
+			if ((slot->ship_class >= 0) && (slot->wep[j] >= 0) && (slot->wep[j] < MAX_WEAPON_TYPES)) {
 				this_loadout_weapons[slot->wep[j]] -= slot->wep_count[j];
 				Assertion((this_loadout_weapons[slot->wep[j]] >= 0), "Attempting to restore the previous missions loadout has resulted in an invalid number of weapons available");
 			}
