Mercurial > hg > octave-shane > gnulib-hg
changeset 11106:1cc89f3c5e6b
Fix use of integer types in memcmp.c.
author | Bruno Haible <bruno@clisp.org> |
---|---|
date | Sun, 01 Feb 2009 22:11:23 +0100 |
parents | 231dfa4dc2c1 |
children | 6bf33b64b03d |
files | ChangeLog lib/memcmp.c modules/memcmp |
diffstat | 3 files changed, 25 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2009-02-01 Bruno Haible <bruno@clisp.org> + + Don't assume sizeof (long) >= sizeof (void *). + * lib/memcmp.c: Include stdint.h. + (memcmp_bytes): Change argument types to op_t. Change type of srcp1, + srcp2 to 'const byte *'. + (memcmp_common_alignment, memcmp_not_common_alignment): Change argument + types to uintptr_t. + (rpl_memcmp): Change type of srcp1, srcp2 to 'uintptr_t'. + * modules/memcmp (Depends-on): Add stdint. + Reported by Ozkan Sezer <sezeroz@gmail.com>. + 2009-01-30 Eric Blake <ebb9@byu.net> fix more require-before-expand issues
--- a/lib/memcmp.c +++ b/lib/memcmp.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1993, 1995, 1997, 1998, 2003, 2006 Free Software +/* Copyright (C) 1991, 1993, 1995, 1997, 1998, 2003, 2006, 2009 Free Software Foundation, Inc. Contributed by Torbjorn Granlund (tege@sics.se). @@ -25,6 +25,8 @@ #include <string.h> +#include <stdint.h> + #undef memcmp #ifdef _LIBC @@ -88,16 +90,16 @@ __inline # endif static int -memcmp_bytes (long unsigned int a, long unsigned int b) +memcmp_bytes (op_t a, op_t b) { - long int srcp1 = (long int) &a; - long int srcp2 = (long int) &b; + const byte *srcp1 = (const byte *) &a; + const byte *srcp2 = (const byte *) &b; op_t a0, b0; do { - a0 = ((byte *) srcp1)[0]; - b0 = ((byte *) srcp2)[0]; + a0 = srcp1[0]; + b0 = srcp2[0]; srcp1 += 1; srcp2 += 1; } @@ -113,7 +115,7 @@ __inline #endif static int -memcmp_common_alignment (long int srcp1, long int srcp2, size_t len) +memcmp_common_alignment (uintptr_t srcp1, uintptr_t srcp2, size_t len) { op_t a0, a1; op_t b0, b1; @@ -198,7 +200,7 @@ __inline #endif static int -memcmp_not_common_alignment (long int srcp1, long int srcp2, size_t len) +memcmp_not_common_alignment (uintptr_t srcp1, uintptr_t srcp2, size_t len) { op_t a0, a1, a2, a3; op_t b0, b1, b2, b3; @@ -302,8 +304,8 @@ { op_t a0; op_t b0; - long int srcp1 = (long int) s1; - long int srcp2 = (long int) s2; + uintptr_t srcp1 = (uintptr_t) s1; + uintptr_t srcp2 = (uintptr_t) s2; op_t res; if (len >= OP_T_THRES)