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 | 6ac7a0dfda687f507052c581d0c0f3b685e246cd (patch) | |
tree | c435470ac8667e76f680ae55177b80fdb6db96b1 | |
parent | af28b668e3959ba544db90c25dbc020fd8403eee (diff) | |
download | tcl-6ac7a0dfda687f507052c581d0c0f3b685e246cd.zip tcl-6ac7a0dfda687f507052c581d0c0f3b685e246cd.tar.gz tcl-6ac7a0dfda687f507052c581d0c0f3b685e246cd.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); } |