diff --git a/newlib/ChangeLog b/newlib/ChangeLog index 820ef098f..5f6203037 100644 --- a/newlib/ChangeLog +++ b/newlib/ChangeLog @@ -1,3 +1,8 @@ +2008-07-07 Hans-Peter Nilsson + + * libc/machine/mips/strncpy.c: Include stdint.h to get uintptr_t. + (strncpy): Cast src to uintptr_t before checking alignment with "&". + 2008-07-02 Jeff Johnston * libc/argz/argz_count.c: Include stddef.h to get size_t. diff --git a/newlib/libc/machine/mips/strncpy.c b/newlib/libc/machine/mips/strncpy.c index 324c45209..47413cb7c 100644 --- a/newlib/libc/machine/mips/strncpy.c +++ b/newlib/libc/machine/mips/strncpy.c @@ -18,6 +18,7 @@ #include #include #include +#include #if !defined(__GNUC__) || (__GNUC__ < 3) #define __builtin_expect(a,b) a @@ -88,7 +89,7 @@ strncpy (char *dst0, const char *src0, size_t count) * a segfault for the case where the source pointer is unaligned, * the null terminator is in valid memory, but reading 2 or 4 bytes at a * time blindly eventually goes outside of valid memory. */ - while ((src & (UNROLL_FACTOR - 1)) != 0 && count > 0) + while (((uintptr_t) src & (UNROLL_FACTOR - 1)) != 0 && count > 0) { *dst++ = ch = *src++; --count;