aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Tatham <anakin@pobox.com>2013-07-05 21:54:45 +0000
committerSimon Tatham <anakin@pobox.com>2013-07-05 21:54:45 +0000
commit82d772e12a0abd7469c65c5891c447023b5c9756 (patch)
tree8ce0bd9ca450f5aac43080a568026759c1ef5148
parent57918d452e472fded61b8decf9501cb0d14a5a80 (diff)
downloadpuzzles-82d772e12a0abd7469c65c5891c447023b5c9756.zip
puzzles-82d772e12a0abd7469c65c5891c447023b5c9756.tar.gz
puzzles-82d772e12a0abd7469c65c5891c447023b5c9756.tar.bz2
puzzles-82d772e12a0abd7469c65c5891c447023b5c9756.tar.xz
Stop using a zero precision specifier with sprintf ("%.0d") to cause
zero to be generated as the empty string rather than "0". Instead, do the job by the obvious approach of not calling sprintf at all if the number is zero. Works around a bug in Emscripten's C library, whose sprintf doesn't correctly handle that corner case. [originally from svn r9893]
-rw-r--r--towers.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/towers.c b/towers.c
index 35ad8e1..011a406 100644
--- a/towers.c
+++ b/towers.c
@@ -741,7 +741,10 @@ done
desc = snewn(40*a, char);
p = desc;
for (i = 0; i < 4*w; i++) {
- p += sprintf(p, "%s%.0d", i?"/":"", clues[i]);
+ if (i)
+ *p++ = '/';
+ if (clues[i])
+ p += sprintf(p, "%d", clues[i]);
}
for (i = 0; i < a; i++)
if (grid[i])