diff --git a/ChangeLog b/ChangeLog index 2e27fed3b6..2d3b520b71 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2000-12-06 Jim Wilson + + * stdlib/l64a.c (l64a): Truncate m to 32-bit value. + 2000-12-06 Ulrich Drepper * stdio-common/printf_fp.c (__printf_fp): Handle decimal point in diff --git a/stdlib/l64a.c b/stdlib/l64a.c index 9fbde5d139..b9922b091c 100644 --- a/stdlib/l64a.c +++ b/stdlib/l64a.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1995, 1996 Free Software Foundation, Inc. +/* Copyright (C) 1995, 1996, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , August 1995. @@ -40,13 +40,16 @@ l64a (n) static char result[7]; int cnt; - if (m == 0l) + /* The standard says that only 32 bits are used. */ + m &= 0xffffffff; + + if (m == 0ul) /* The value for N == 0 is defined to be the empty string. */ return (char *) ""; result[6] = '\0'; - for (cnt = 5; m > 0; --cnt) + for (cnt = 5; m > 0ul; --cnt) { result[cnt] = conv_table[m & 0x3f]; m >>= 6;