The upstream maintainer, Simon Thatam, noticed this build problem and brought a fix in this commit:
https://git.tartarus.org/?p=simon/puzzles.git;a=commit;h=907c42bcf0f06826279d5be91be7f7f9c45876d9
Note that it fuzzes with the current 20170606.272beef-1 version
of the package, so I took the liberty to test out the patch here
below. But I suspect that a better approach would be to upgrade
to the latest version of the Portable Puzzle Collection.
This is yet to be tested on 263-bit int platform. ;)
_________________________________________________________________
fix-ftbfs-with-gcc-9.patch:
--- a/twiddle.c 2019-12-10 21:28:42.488548074 +0100
+++ b/twiddle.c 2019-12-10 21:29:49.945015261 +0100
@@ -556,6 +556,12 @@
char *ret, *p, buf[80];
int i, x, y, col, o, maxlen;
+ /* Pedantic check: ensure buf is large enough to format an int in
+ * decimal, using the bound log10(2) < 1/3. (Obviously in practice
+ * int is not going to be larger than even 32 bits any time soon,
+ * but.) */
+ assert(sizeof(buf) >= 1 + sizeof(int) * CHAR_BIT/3);
+
/*
* First work out how many characters we need to display each
* number. We're pretty flexible on grid contents here, so we
@@ -568,6 +574,11 @@
}
o = (state->orientable ? 1 : 0);
+ /* Reassure sprintf-checking compilers like gcc that the field
+ * width we've just computed is not now excessive */
+ if (col >= sizeof(buf))
+ col = sizeof(buf)-1;
+
/*
* Now we know the exact total size of the grid we're going to
* produce: it's got h rows, each containing w lots of col+o,
signature.asc
Description: OpenPGP digital signature

