aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Harris <bjh21@bjh21.me.uk>2023-06-22 23:08:19 +0100
committerBen Harris <bjh21@bjh21.me.uk>2023-06-22 23:08:43 +0100
commit6db5cdadd09fad0c8373e32dcfc7ab5b8bcb74e6 (patch)
treefc08c4605bd18805712496afd1a957e4fad4b88f
parentda014d23dad4bcff0215d9ba7758652c85c06a20 (diff)
downloadpuzzles-6db5cdadd09fad0c8373e32dcfc7ab5b8bcb74e6.zip
puzzles-6db5cdadd09fad0c8373e32dcfc7ab5b8bcb74e6.tar.gz
puzzles-6db5cdadd09fad0c8373e32dcfc7ab5b8bcb74e6.tar.bz2
puzzles-6db5cdadd09fad0c8373e32dcfc7ab5b8bcb74e6.tar.xz
Blackbox: correct FROMDRAW() macro for C division semantics
Integer division in C rounds towards zero, so if you want it to consistently round down you need to ensure that the arguments are positive. FROMDRAW() didn't do that, so clicks off the top and left corners of the grid got treated as being in the top row or left column (row and column 0) rather than ignored. This commit fixes the macro so that it offsets its argument upward before the division and compensates afterwards.
-rw-r--r--blackbox.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/blackbox.c b/blackbox.c
index 01833f4..2025d1d 100644
--- a/blackbox.c
+++ b/blackbox.c
@@ -905,7 +905,7 @@ done:
#define TILE_SIZE (ds->tilesize)
#define TODRAW(x) ((TILE_SIZE * (x)) + (TILE_SIZE / 2))
-#define FROMDRAW(x) (((x) - (TILE_SIZE / 2)) / TILE_SIZE)
+#define FROMDRAW(x) (((x) + (TILE_SIZE / 2)) / TILE_SIZE - 1)
#define CAN_REVEAL(state) ((state)->nguesses >= (state)->minballs && \
(state)->nguesses <= (state)->maxballs && \