When retiring snprintf, the related function strdup was also retired. However strdup is not in C99 but in BSD/POSIX and thus is not available by default. In C it is implicitly declared to return int which fails if the actual returned pointer is larger than 32 bits. The branch
Regarding strdup: Ouch. Hello 1972, nice to meet you.
Isn't there a gcc warning that requires prototypes for all functions? I think we should be able to enable this safely.
There is a gcc warning that one can use for prototypes, however it warns about many benign uses of say printf without prototype. It is also only a warning and I would not want to have to rely on it (or only on its error-ized version from -Werror) to prevent subtle errors (since the wrong prototyped one will work as long as the returned address is less than 2GB) since we have very many other warnings that are triggered when compiling the full set of thorns.