foxygit / doom Log in
commit 1f5ce047ad6cb709f746b794b4a2dea9e2f89fb6
Author:     Simon Howard <fraggle@soulsphere.org>
AuthorDate: Fri Feb 20 00:03:15 2015 -0500
Commit:     Simon Howard <fraggle@soulsphere.org>
CommitDate: Fri Feb 20 00:03:15 2015 -0500

    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;