libgfortran: Fix negation for largest integer [PR81986]

libgfortran/ChangeLog:
2021-03-01  Vittorio Zecca  <zeccav@gmail.com>
	    Tobias Burnus  <tobias@codesourcery.com>

	PR libfortran/81986
	* runtime/string.c (gfc_itoa): Cast to unsigned before
	negating.
This commit is contained in:
Tobias Burnus 2021-03-03 08:05:45 +01:00
parent f8e7f3f3f3
commit 006693a59f

View file

@ -196,7 +196,7 @@ gfc_itoa (GFC_INTEGER_LARGEST n, char *buffer, size_t len)
if (n < 0)
{
negative = 1;
t = -n; /*must use unsigned to protect from overflow*/
t = -(GFC_UINTEGER_LARGEST) n; /* Must use unsigned to protect from overflow. */
}
p = buffer + GFC_ITOA_BUF_SIZE - 1;