mirror of
https://sourceware.org/git/glibc.git
synced 2025-12-24 17:51:17 +03:00
Update.
1998-04-15 Ulrich Drepper <drepper@cygnus.com> * iconv/gconv_simple.c (__gconv_transform_ucs4_ascii): Fix typo in last change. 1998-04-14 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * elf/dl-minimal.c (__strtol_internal): Correct range check. Fix return value on overflow. 1998-04-14 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/posix/mkstemp.c (mkstemp): Change value and v to 64 bits. 1998-04-14 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * malloc/mtrace.c (mtrace): Use standard function setvbuf instead of non-standard function setbuffer. 1998-04-15 Andreas Jaeger <aj@arthur.rhein-neckar.de> * stdio-common/perror.c: Include <string.h> for __strerror_r.
This commit is contained in:
@@ -247,15 +247,12 @@ __strtol_internal (const char *nptr, char **endptr, int base, int group)
|
||||
{
|
||||
unsigned long int digval = *nptr - '0';
|
||||
if (result > LONG_MAX / 10
|
||||
|| (result == (sign
|
||||
? (unsigned long int) LONG_MAX
|
||||
: (unsigned long int) LONG_MAX + 1) / 10
|
||||
&& digval > (sign
|
||||
? (unsigned long int) LONG_MAX
|
||||
: (unsigned long int) LONG_MAX + 1) % 10))
|
||||
|| (sign > 0 ? result == LONG_MAX / 10 && digval > LONG_MAX % 10
|
||||
: (result == ((unsigned long int) LONG_MAX + 1) / 10
|
||||
&& digval > ((unsigned long int) LONG_MAX + 1) % 10)))
|
||||
{
|
||||
errno = ERANGE;
|
||||
return LONG_MAX * sign;
|
||||
return sign > 0 ? LONG_MAX : LONG_MIN;
|
||||
}
|
||||
result *= 10;
|
||||
result += digval;
|
||||
|
||||
Reference in New Issue
Block a user