diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2011-03-21 00:46:53 -0700 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2011-03-21 00:46:53 -0700 |
commit | f0d80d43baa89029ea030a98350a74793ee5dc89 (patch) | |
tree | 392ccea9f3a58959e20817b046ecc25dceb3a878 /lib-src/update-game-score.c | |
parent | 37dd57d1e53ffb2d9dee6cc66d807e6d2575ef57 (diff) | |
download | emacs-f0d80d43baa89029ea030a98350a74793ee5dc89.tar.gz |
update-game-score: fix bug with -r
* update-game-score.c (main): Don't set 'scores' to garbage when
-r is specified and scorecount != MAX_SCORES. This bug was
introduced in the 2002-04-10 change, and was found with gcc
-Wstrict-overflow (GCC 4.5.2, x86-64).
Diffstat (limited to 'lib-src/update-game-score.c')
-rw-r--r-- | lib-src/update-game-score.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/lib-src/update-game-score.c b/lib-src/update-game-score.c index 70b79a64f91..e95e2ce259d 100644 --- a/lib-src/update-game-score.c +++ b/lib-src/update-game-score.c @@ -242,13 +242,15 @@ main (int argc, char **argv) push_score (&scores, &scorecount, newscore, user_id, newdata); sort_scores (scores, scorecount, reverse); /* Limit the number of scores. If we're using reverse sorting, then - we should increment the beginning of the array, to skip over the - *smallest* scores. Otherwise, we just decrement the number of - scores, since the smallest will be at the end. */ + also increment the beginning of the array, to skip over the + *smallest* scores. Otherwise, just decrementing the number of + scores suffices, since the smallest is at the end. */ if (scorecount > MAX_SCORES) - scorecount -= (scorecount - MAX_SCORES); - if (reverse) - scores += (scorecount - MAX_SCORES); + { + if (reverse) + scores += (scorecount - MAX_SCORES); + scorecount = MAX_SCORES; + } if (write_scores (scorefile, scores, scorecount) < 0) { unlock_file (scorefile, lockstate); |