[Fix?] FFS! Trying to delete a weapon that doesn't even exist!
This commit is contained in:
parent
3fc6514861
commit
29f58fe1e4
17
src/weapon.c
17
src/weapon.c
@ -321,7 +321,8 @@ static void weapons_updateLayer(const double dt, const WeaponLayer layer) {
|
||||
break;
|
||||
}
|
||||
|
||||
for(i = 0; i < (*nlayer); i++) {
|
||||
i = 0;
|
||||
while(i < *nlayer) {
|
||||
w = wlayer[i];
|
||||
switch(wlayer[i]->outfit->type) {
|
||||
/* Most missiles behave the same. */
|
||||
@ -365,8 +366,10 @@ static void weapons_updateLayer(const double dt, const WeaponLayer layer) {
|
||||
break;
|
||||
}
|
||||
weapon_update(wlayer[i], dt, layer);
|
||||
/* If the weapon has been deleted we are going to have to hold back one. */
|
||||
if(w != wlayer[i]) i--;
|
||||
|
||||
/* Only increment if weapon wasn't deleted. */
|
||||
if(w == wlayer[i])
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
@ -987,7 +990,13 @@ static void weapon_destroy(Weapon* w, WeaponLayer layer) {
|
||||
nlayer = &nwfrontLayer;
|
||||
break;
|
||||
}
|
||||
for(i = 0; wlayer[i] != w; i++); /* Get us to the current posision. */
|
||||
|
||||
for(i = 0; (wlayer[i] != w) && (i < *nlayer); i++); /* Get to the current position. */
|
||||
if(i >= *nlayer) {
|
||||
WARN("Trying to destroy weapon not found in stack!");
|
||||
return;
|
||||
}
|
||||
|
||||
weapon_free(wlayer[i]);
|
||||
wlayer[i] = NULL;
|
||||
(*nlayer)--;
|
||||
|
Loading…
Reference in New Issue
Block a user