From: Simon Tatham Date: Fri, 5 Jul 2013 21:54:45 +0000 (+0000) Subject: Stop using a zero precision specifier with sprintf ("%.0d") to cause X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ian/git?a=commitdiff_plain;h=82d772e12a0abd7469c65c5891c447023b5c9756;p=sgt-puzzles.git 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] --- 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])