From 890b6f4a25a31acb7bb5b8c16193dc5d404b0805 Mon Sep 17 00:00:00 2001 From: John Marino Date: Wed, 11 Feb 2015 09:03:31 +0100 Subject: [PATCH] games: Fix real bugs on three games (found by gcc 5.0) I had NO_GAMES set so I missed these bugs yesterday. Adventure, Fortune, and Mille all had bugs in them (the latter had two). Now gcc-5.0 can build the entire world and kernel. I still need to verify that a gcc-5.0 built world and kernel is bootable and works though. --- games/adventure/init.c | 2 +- games/fortune/fortune/fortune.c | 2 +- games/mille/move.c | 11 ++++++----- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/games/adventure/init.c b/games/adventure/init.c index 122b90d4b8..beb36313e1 100644 --- a/games/adventure/init.c +++ b/games/adventure/init.c @@ -81,7 +81,7 @@ linkdata(void) int i, j; /* array linkages */ - for (i = 1; i <= LOCSIZ; i++) + for (i = 1; i < LOCSIZ; i++) if (ltext[i].seekadr != 0 && travel[i] != 0) if ((travel[i]->tverb) == 1) cond[i] = 2; diff --git a/games/fortune/fortune/fortune.c b/games/fortune/fortune/fortune.c index 175ab53f1c..9606aa0448 100644 --- a/games/fortune/fortune/fortune.c +++ b/games/fortune/fortune/fortune.c @@ -97,7 +97,7 @@ bool All_forts = false; /* any fortune allowed */ bool Equal_probs= false; /* scatter un-allocted prob equally */ bool Match = false; /* dump fortunes matching a pattern */ #ifdef DEBUG -bool Debug = false; /* print debug messages */ +int Debug = 0; /* print debug messages */ #endif char *Fortbuf = NULL; /* fortune buffer for -m */ diff --git a/games/mille/move.c b/games/mille/move.c index 7581cc0256..8a0da4124e 100644 --- a/games/mille/move.c +++ b/games/mille/move.c @@ -140,7 +140,7 @@ acc: for (i = 1; i < HAND_SZ; i++) if (pp->hand[i] == C_INIT) { for (j = 0; pp->hand[j] == C_INIT; j++) - if (j >= HAND_SZ) { + if (j == HAND_SZ - 1) { j = 0; break; } @@ -193,6 +193,7 @@ playcard(PLAY *pp) { int v; CARD card; + bool blockNext; /* * check and see if player has picked @@ -212,7 +213,7 @@ mustpick: if (Debug) fprintf(outf, "PLAYCARD: Card = %s\n", C_name[card]); #endif - Next = FALSE; + blockNext = FALSE; switch (card) { case C_200: if (pp->nummiles[C_200] == 2) @@ -322,18 +323,18 @@ protected: if (!pp->can_go && isrepair(pp->battle)) pp->can_go = TRUE; } - Next = -1; + blockNext = TRUE; break; case C_INIT: error("no card there"); - Next = -1; + blockNext = TRUE; break; } if (pp == &Player[PLAYER]) account(card); pp->hand[Card_no] = C_INIT; - Next = (Next == -1 ? FALSE : TRUE); + Next = !blockNext; return TRUE; } -- 2.41.0