Sergei Trofimovich (19 February 2022 00:48) reports: > Upcoming gcc-12 detects possible buffer overflow for 1 byte: [snip] > Unlikely numbers like '-1234567890' including null terminator take 12 > bytes of storage.
and that's assuming a 32-bit int; the signed range is from -2,147,483,647 to 2,147,483,648. However, may I suggest the following (which I know I included in the GPL'd cfengine sources at some point): #define DECIMAL_SIGNED_BUFFER_SIZE(bytes) (3 + (53 * (bytes)) / 22) #define DECIMAL_UNSIGNED_BUFFER_SIZE(bytes) (2 + (53 * (bytes)) / 22) and then pass sizeof(int) to the appropriate one of those everywhere that needs a buffer size (or contribution thereto) for the representation of an integral type as a decimal string ? For the rationale behind the numbers, see https://github.com/ediosyncratic/study.py/blob/master/maths/buffersize.py (which comes with assertions confirming the correctness). Then you won't have to update all your buffer-sizes for systems with different sizes of standard integral types, Eddy.