diff options
author | dkf <donal.k.fellows@manchester.ac.uk> | 2007-01-22 09:56:32 (GMT) |
---|---|---|
committer | dkf <donal.k.fellows@manchester.ac.uk> | 2007-01-22 09:56:32 (GMT) |
commit | f8ee7e801e06b6101e6e1180a0b7a88b7db47843 (patch) | |
tree | c435470ac8667e76f680ae55177b80fdb6db96b1 | |
parent | 690f5c8195ae88f99ecac399e39ab6f2b3c0465b (diff) | |
download | tcl-f8ee7e801e06b6101e6e1180a0b7a88b7db47843.zip tcl-f8ee7e801e06b6101e6e1180a0b7a88b7db47843.tar.gz tcl-f8ee7e801e06b6101e6e1180a0b7a88b7db47843.tar.bz2 |
Fix [Bug 1631017]
-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); } |