shithub: puzzles

Download patch

ref: 82d772e12a0abd7469c65c5891c447023b5c9756
parent: 57918d452e472fded61b8decf9501cb0d14a5a80
author: Simon Tatham <anakin@pobox.com>
date: Fri Jul 5 17:54:45 EDT 2013

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]

--- a/towers.c
+++ b/towers.c
@@ -741,7 +741,10 @@
     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])