Messages in this thread | | | Date | Mon, 29 Nov 2010 06:11:21 +0300 | From | Pavel Vasilyev <> | Subject | Re: [PATCH] Repalce strncmp by memcmp |
| |
On 29.11.2010 05:29, Ming Lei wrote: > Hi, > > 2010/11/29 Pavel Vasilyev <pavel@pavlinux.ru>: >> This patch replace all strncmp(a, b, c) by memcmp(a, b, c). >> >> I test on x86_64 (AMD Opteron 285). > In fact, memcmp doesn't handle case of tail of string, so > it is not safe to replace strncmp with memcmp > #include <stdio.h> #include <errno.h>
int main() {
char *STR = "XXXX\0"; char *XXX = "XXXX"; int a, b;
errno = 0; a = memcmp(STR, XXX, 5); a += errno; errno = 0; b = strncmp(STR, XXX, 5); b += errno; printf("5 chars: %d %d \n", a, b); errno = 0; a = memcmp(STR, XXX, 4); a += errno; errno = 0; b = strncmp(STR, XXX, 4); b += errno; printf("4 chars: %d %d \n", a, b);
printf("SWAP STRINGS\n");
errno = 0; a = memcmp(XXX, STR, 5); a += errno; errno = 0; b = strncmp(XXX, STR, 5); b += errno; printf("5 chars: %d %d \n", a, b); errno = 0; a = memcmp(XXX, STR, 4); a += errno; errno = 0; b = strncmp(XXX, STR, 4); b += errno; printf("4 chars: %d %d \n", a, b);
return 0; } ---- # ./a.out 5 chars: 0 0 4 chars: 0 0 SWAP STRINGS 5 chars: 0 0 4 chars: 0 0
But I think the same thing ;)
--
Pavel.
| |