diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | stdlib/l64a.c | 9 |
2 files changed, 10 insertions, 3 deletions
@@ -1,3 +1,7 @@ +2000-12-06 Jim Wilson <wilson@redhat.com> + + * stdlib/l64a.c (l64a): Truncate m to 32-bit value. + 2000-12-06 Ulrich Drepper <drepper@redhat.com> * stdio-common/printf_fp.c (__printf_fp): Handle decimal point in diff --git a/stdlib/l64a.c b/stdlib/l64a.c index 9fbde5d..b9922b0 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 <drepper@gnu.ai.mit.edu>, 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; |