fire launch: Avoid "may be used uninitialized" warnings

launch_missile() initializes @n to the target ship number only when
the target is a ship.  It also uses it only then, to re-get the ship.
Clang is cool with this, but GCC gets confused and warns "‘n’ may be
used uninitialized".

Use target_ship.shp_uid instead of @n to avoid the warning.

Similar issue in c_fire(): use vship.shp_uid instead of for @vhsipno.

Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
This commit is contained in:
Markus Armbruster 2021-01-23 08:48:56 +01:00
parent 1f6b79dd10
commit 4914daa587
2 changed files with 3 additions and 2 deletions

View file

@ -263,7 +263,8 @@ launch_missile(struct plnstr *pp)
target_ship.shp_x, target_ship.shp_y, target_ship.shp_x, target_ship.shp_y,
target_ship.shp_own, &sublaunch) < 0) target_ship.shp_own, &sublaunch) < 0)
return RET_OK; return RET_OK;
getship(n, &target_ship); /* @target_ship may have expended shells defending */
getship(target_ship.shp_uid, &target_ship);
if (!msl_hit(pp, shp_hardtarget(&target_ship), EF_SHIP, if (!msl_hit(pp, shp_hardtarget(&target_ship), EF_SHIP,
N_SHP_MISS, N_SHP_SMISS, sublaunch, N_SHP_MISS, N_SHP_SMISS, sublaunch,
target_ship.shp_own)) { target_ship.shp_own)) {

View file

@ -393,7 +393,7 @@ c_fire(void)
putsect(&vsect); putsect(&vsect);
break; break;
default: default:
getship(vshipno, &vship); getship(vship.shp_uid, &vship);
shipdamage(&vship, dam); shipdamage(&vship, dam);
if (vship.shp_effic < SHIP_MINEFF) if (vship.shp_effic < SHIP_MINEFF)
pr("%s sunk!\n", prsub(&vship)); pr("%s sunk!\n", prsub(&vship));