[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;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
for(i = 0; i < (*nlayer); i++) {
|
i = 0;
|
||||||
|
while(i < *nlayer) {
|
||||||
w = wlayer[i];
|
w = wlayer[i];
|
||||||
switch(wlayer[i]->outfit->type) {
|
switch(wlayer[i]->outfit->type) {
|
||||||
/* Most missiles behave the same. */
|
/* Most missiles behave the same. */
|
||||||
@ -365,8 +366,10 @@ static void weapons_updateLayer(const double dt, const WeaponLayer layer) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
weapon_update(wlayer[i], dt, layer);
|
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;
|
nlayer = &nwfrontLayer;
|
||||||
break;
|
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]);
|
weapon_free(wlayer[i]);
|
||||||
wlayer[i] = NULL;
|
wlayer[i] = NULL;
|
||||||
(*nlayer)--;
|
(*nlayer)--;
|
||||||
|
Loading…
Reference in New Issue
Block a user