From 82d772e12a0abd7469c65c5891c447023b5c9756 Mon Sep 17 00:00:00 2001 From: Simon Tatham Date: Fri, 5 Jul 2013 21:54:45 +0000 Subject: [PATCH] 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] --- towers.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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])