Re: undefined behaviour in troff

"G. Branden Robinson" <[email protected]> Fri, 24 Jul 2026 18:18:19 -0500
Newsgroups gmane.comp.printing.groff.general
Message-ID <20260724231819.tk5hi47piepbmgpo@illithid>
--qouy26p5wh6yffw4
Content-Type: text/plain; protected-headers=v1; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Subject: Re: undefined behaviour in troff
MIME-Version: 1.0

Hi Bruno,

At 2026-07-25T01:10:20+0200, Bruno Haible wrote:
> I tried building the groff-1.25.0.rc1 with clang's ASAN (usually
> better than gcc's ASAN) on a GNU system. For reference, I use these
> environment variables:
> $ make -k
>   GEN      doc/line-layout.eps
> ../src/roff/troff/dictionary.cpp:45:29: runtime error: left shift of 7205=
7594037927936 by 8 places cannot be represented in type 'ssize_t' (aka 'lon=
g')
> SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior ../src/roff/troff=
/dictionary.cpp:45:29=20
> /build/groff-1.25.0.rc1/build-64-clang/groff: error: troff: Aborted
> make: *** [Makefile:20188: doc/line-layout.eps] Error 8
>=20
> Signed integer overflow is undefined behaviour.
>=20
> The attached patch fixes it for me.

Thanks!  I had not run into this one yet, and have been procrastinating
turning screws on GNU troff's `dictionary` class since it so obviously
screams for a direct STL replacement.

Regards,
Branden

--qouy26p5wh6yffw4
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQIzBAABCAAdFiEEh3PWHWjjDgcrENwa0Z6cfXEmbc4FAmpj8rsACgkQ0Z6cfXEm
bc6vmBAAgUuTy6bwR1iJ4nRBm7IsxRrwwBIs6BwJPsebia1JxAQr5IXkZo3Er76I
lQOgdrLxolW9vJKIGlPQ9I7IdR7WQDEHs6zzzquwl7mAlxMCJJV2BmCN4vILuB53
kfWG4uGNtraBO29JpgBmMYP3xJyHpGTuW0R1JkYVkGSUjUleOql51XGWl1TcVIi7
AKcdiEHNCR2lKyrhx1PHifVeejVIFr3N56Jn5tFdjuF5KAuobHuV3U6pP5qvbPvg
jC1oQxDHy17jWT0Z5Wh/7dnzlAr/mHmB9UKY8e7EPzsUjMd6Qatp/pu8eQVsLBgh
EbJNDr/0uTD2SccaRq79r+DccLyf1GNkkPyW6XC0lRaBzfc9baUbG5v0VU/D42iL
9D1gNeCSgldHmYF+oXPJl27IyOibIi4CYrFMCwfsrMNmRAYT8GZiKVdiiRppOIWu
xJ8Sp+CSFyGaRIXNaku9DMq9Wfk4MIwK+SN/ByDQvVbImGvI3mGN0N3ivFiewjou
RSM01FSWUMzcqAmDRaNfFV3JkqhCrBVFcwlRD0GzWxLBOQ3vRXVQ+bH5LAezfWU8
Zf1iMHVY/oNuP5XUeDihbG4DEuHICtL9swPo5EazD0ZK6Uzdmevm/3h9EsVibjE/
xzHyDNVoMVRPOl0gxl1j8Sq5csefJL0PVaoIhWDLCps7MskKYfU=
=1/wg
-----END PGP SIGNATURE-----

--qouy26p5wh6yffw4--