From 1f5ce047ad6cb709f746b794b4a2dea9e2f89fb6 Mon Sep 17 00:00:00 2001 From: Simon Howard Date: Fri, 20 Feb 2015 00:03:15 -0500 Subject: Fix game code that makes false boolean assumptions. Various bits of code assume that booleans are represented as 32-bit ints and that they can be assigned to from 32-bit values. This isn't true on all systems; fix code that does this to convert to boolean values properly. This is more progress towards fixing #509. --- src/doom/p_inter.c | 15 +++++++++------ src/doom/p_map.c | 2 +- src/doom/p_maputl.c | 2 +- src/heretic/p_map.c | 2 +- src/heretic/p_maputl.c | 2 +- src/hexen/p_map.c | 2 +- src/hexen/p_maputl.c | 2 +- src/hexen/p_spec.c | 2 +- src/strife/p_enemy.c | 4 ++-- src/strife/p_inter.c | 10 ++++++---- src/strife/p_map.c | 2 +- src/strife/p_maputl.c | 2 +- 12 files changed, 26 insertions(+), 21 deletions(-) diff --git a/src/doom/p_inter.c b/src/doom/p_inter.c index c9965799..633408fe 100644 --- a/src/doom/p_inter.c +++ b/src/doom/p_inter.c @@ -603,8 +603,9 @@ P_TouchSpecialThing break; case SPR_MGUN: - if (!P_GiveWeapon (player, wp_chaingun, special->flags&MF_DROPPED) ) - return; + if (!P_GiveWeapon(player, wp_chaingun, + (special->flags & MF_DROPPED) != 0)) + return; player->message = DEH_String(GOTCHAINGUN); sound = sfx_wpnup; break; @@ -631,15 +632,17 @@ P_TouchSpecialThing break; case SPR_SHOT: - if (!P_GiveWeapon (player, wp_shotgun, special->flags&MF_DROPPED ) ) - return; + if (!P_GiveWeapon(player, wp_shotgun, + (special->flags & MF_DROPPED) != 0)) + return; player->message = DEH_String(GOTSHOTGUN); sound = sfx_wpnup; break; case SPR_SGN2: - if (!P_GiveWeapon (player, wp_supershotgun, special->flags&MF_DROPPED ) ) - return; + if (!P_GiveWeapon(player, wp_supershotgun, + (special->flags & MF_DROPPED) != 0)) + return; player->message = DEH_String(GOTSHOTGUN2); sound = sfx_wpnup; break; diff --git a/src/doom/p_map.c b/src/doom/p_map.c index e371869a..9d3086fd 100644 --- a/src/doom/p_map.c +++ b/src/doom/p_map.c @@ -357,7 +357,7 @@ boolean PIT_CheckThing (mobj_t* thing) // check for special pickup if (thing->flags & MF_SPECIAL) { - solid = thing->flags&MF_SOLID; + solid = (thing->flags & MF_SOLID) != 0; if (tmflags&MF_PICKUP) { // can remove thing diff --git a/src/doom/p_maputl.c b/src/doom/p_maputl.c index 916f2b64..098c2c73 100644 --- a/src/doom/p_maputl.c +++ b/src/doom/p_maputl.c @@ -887,7 +887,7 @@ P_PathTraverse int count; - earlyout = flags & PT_EARLYOUT; + earlyout = (flags & PT_EARLYOUT) != 0; validcount++; intercept_p = intercepts; diff --git a/src/heretic/p_map.c b/src/heretic/p_map.c index 48db07e5..6f1e64d7 100644 --- a/src/heretic/p_map.c +++ b/src/heretic/p_map.c @@ -428,7 +428,7 @@ boolean PIT_CheckThing(mobj_t * thing) // Check for special thing if (thing->flags & MF_SPECIAL) { - solid = thing->flags & MF_SOLID; + solid = (thing->flags & MF_SOLID) != 0; if (tmflags & MF_PICKUP) { // Can be picked up by tmthing P_TouchSpecialThing(thing, tmthing); // Can remove thing diff --git a/src/heretic/p_maputl.c b/src/heretic/p_maputl.c index 577f527c..e2a71556 100644 --- a/src/heretic/p_maputl.c +++ b/src/heretic/p_maputl.c @@ -667,7 +667,7 @@ boolean P_PathTraverse(fixed_t x1, fixed_t y1, fixed_t x2, fixed_t y2, int mapx, mapy, mapxstep, mapystep; int count; - earlyout = flags & PT_EARLYOUT; + earlyout = (flags & PT_EARLYOUT) != 0; validcount++; intercept_p = intercepts; diff --git a/src/hexen/p_map.c b/src/hexen/p_map.c index 11aa23e0..b1c542ca 100644 --- a/src/hexen/p_map.c +++ b/src/hexen/p_map.c @@ -661,7 +661,7 @@ boolean PIT_CheckThing(mobj_t * thing) // Check for special thing if (thing->flags & MF_SPECIAL) { - solid = thing->flags & MF_SOLID; + solid = (thing->flags & MF_SOLID) != 0; if (tmflags & MF_PICKUP) { // Can be picked up by tmthing P_TouchSpecialThing(thing, tmthing); // Can remove thing diff --git a/src/hexen/p_maputl.c b/src/hexen/p_maputl.c index a48ea8fa..dcc7d5d2 100644 --- a/src/hexen/p_maputl.c +++ b/src/hexen/p_maputl.c @@ -699,7 +699,7 @@ boolean P_PathTraverse(fixed_t x1, fixed_t y1, fixed_t x2, fixed_t y2, int mapx, mapy, mapxstep, mapystep; int count; - earlyout = flags & PT_EARLYOUT; + earlyout = (flags & PT_EARLYOUT) != 0; validcount++; intercept_p = intercepts; diff --git a/src/hexen/p_spec.c b/src/hexen/p_spec.c index e2069fb9..d36d3e86 100644 --- a/src/hexen/p_spec.c +++ b/src/hexen/p_spec.c @@ -864,7 +864,7 @@ boolean P_ActivateLine(line_t * line, mobj_t * mo, int side, if (line->flags & ML_SECRET) return false; // never open secret doors } - repeat = line->flags & ML_REPEAT_SPECIAL; + repeat = (line->flags & ML_REPEAT_SPECIAL) != 0; buttonSuccess = false; // Construct args[] array to contain the arguments from the line, as we diff --git a/src/strife/p_enemy.c b/src/strife/p_enemy.c index 8aad08fc..e358e616 100644 --- a/src/strife/p_enemy.c +++ b/src/strife/p_enemy.c @@ -891,7 +891,7 @@ void A_Look (mobj_t* actor) // as a parameter to control allaround look behavior. Did they just run out of // flags, or what? // STRIFE-TODO: Needs serious verification. - if (!P_LookForPlayers (actor, actor->flags & MF_GIVEQUEST) ) + if (!P_LookForPlayers(actor, (actor->flags & MF_GIVEQUEST) != 0)) return; // go into chase state @@ -975,7 +975,7 @@ void A_FriendLook(mobj_t* actor) gamemap != 3 && gamemap != 34) { // STRIFE-TODO: Needs serious verification. - if(P_LookForPlayers(actor, actor->flags & MF_GIVEQUEST)) + if(P_LookForPlayers(actor, (actor->flags & MF_GIVEQUEST) != 0)) { P_SetMobjState(actor, actor->info->seestate); actor->flags |= MF_NODIALOG; diff --git a/src/strife/p_inter.c b/src/strife/p_inter.c index 71db6fe1..f2e16efb 100644 --- a/src/strife/p_inter.c +++ b/src/strife/p_inter.c @@ -537,7 +537,7 @@ void P_TouchSpecialThing(mobj_t* special, mobj_t* toucher) // rifle case SPR_RIFL: - if(!P_GiveWeapon(player, wp_rifle, special->flags & MF_DROPPED)) + if(!P_GiveWeapon(player, wp_rifle, (special->flags & MF_DROPPED) != 0)) return; sound = sfx_wpnup; // haleyjd: SHK-CHK! break; @@ -560,7 +560,8 @@ void P_TouchSpecialThing(mobj_t* special, mobj_t* toucher) // grenade launcher case SPR_GRND: - if(!P_GiveWeapon(player, wp_hegrenade, special->flags & MF_DROPPED)) + if(!P_GiveWeapon(player, wp_hegrenade, + (special->flags & MF_DROPPED) != 0)) return; sound = sfx_wpnup; // haleyjd: SHK-CHK! break; @@ -574,14 +575,15 @@ void P_TouchSpecialThing(mobj_t* special, mobj_t* toucher) // electric bolt crossbow case SPR_CBOW: - if(!P_GiveWeapon(player, wp_elecbow, special->flags & MF_DROPPED)) + if(!P_GiveWeapon(player, wp_elecbow, + (special->flags & MF_DROPPED) != 0)) return; sound = sfx_wpnup; // haleyjd: SHK-CHK! break; // haleyjd 09/21/10: missed case: THE SIGIL! case SPR_SIGL: - if(!P_GiveWeapon(player, wp_sigil, special->flags & MF_DROPPED)) + if(!P_GiveWeapon(player, wp_sigil, (special->flags & MF_DROPPED) != 0)) { player->sigiltype = special->frame; return; diff --git a/src/strife/p_map.c b/src/strife/p_map.c index 13a1bb54..03b57edd 100644 --- a/src/strife/p_map.c +++ b/src/strife/p_map.c @@ -384,7 +384,7 @@ boolean PIT_CheckThing (mobj_t* thing) // check for special pickup if (thing->flags & MF_SPECIAL) { - solid = thing->flags&MF_SOLID; + solid = (thing->flags & MF_SOLID) != 0; if (tmthing->player) // villsa [STRIFE] no longer checks MF_PICKUP flag { // can remove thing diff --git a/src/strife/p_maputl.c b/src/strife/p_maputl.c index 4ecb5566..f1773858 100644 --- a/src/strife/p_maputl.c +++ b/src/strife/p_maputl.c @@ -941,7 +941,7 @@ P_PathTraverse int count; - earlyout = flags & PT_EARLYOUT; + earlyout = (flags & PT_EARLYOUT) != 0; validcount++; intercept_p = intercepts; -- cgit v1.2.3