diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | compat/memcmp.c | 9 |
2 files changed, 10 insertions, 4 deletions
@@ -1,3 +1,8 @@ +2007-01-22 Donal K. Fellows <donal.k.fellows@man.ac.uk> + + * compat/memcmp.c (memcmp): Reworked so that arithmetic is never + performed upon void pointers, since that is illegal. [Bug 1631017] + 2006-01-19 Daniel Steffen <das@users.sourceforge.net> * macosx/tclMacOSXNotify.c: accommodate changes to prototypes of diff --git a/compat/memcmp.c b/compat/memcmp.c index 09a5724..dd4cacc 100644 --- a/compat/memcmp.c +++ b/compat/memcmp.c @@ -48,11 +48,12 @@ memcmp(s1, s2, n) CONST VOID *s2; /* Second string. */ size_t n; /* Length to compare. */ { - unsigned char u1, u2; + VOID unsigned char *ptr1 = (VOID unsigned char *) s1; + VOID unsigned char *ptr2 = (VOID unsigned char *) s2; + + for ( ; n-- ; ptr1++, ptr2++) { + unsigned char u1 = *s1, u2 = *s2; - for ( ; n-- ; s1++, s2++) { - u1 = * (unsigned char *) s1; - u2 = * (unsigned char *) s2; if ( u1 != u2) { return (u1-u2); } |