From f8ee7e801e06b6101e6e1180a0b7a88b7db47843 Mon Sep 17 00:00:00 2001 From: dkf Date: Mon, 22 Jan 2007 09:56:32 +0000 Subject: Fix [Bug 1631017] --- ChangeLog | 5 +++++ compat/memcmp.c | 9 +++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2ec53a9..a1eeba0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-01-22 Donal K. Fellows + + * 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 * 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); } -- cgit v0.12