From f333d7f6d26733c2217e558ffa45bec0a611b102 Mon Sep 17 00:00:00 2001 From: Marcelo Matus Date: Tue, 22 Mar 2005 09:51:29 +0000 Subject: [PATCH] fix string cmp old change git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@7098 626c5289-ae23-0410-ae9c-e8d60b6d4f22 --- Source/DOH/string.c | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/Source/DOH/string.c b/Source/DOH/string.c index 16f72f7ce..1aede9e08 100644 --- a/Source/DOH/string.c +++ b/Source/DOH/string.c @@ -113,23 +113,27 @@ String_cmp(DOH *so1, DOH *so2) { String * s1 = (String *) ObjData(so1); String * s2 = (String *) ObjData(so2); - register int len = s1->len; register char *c1 = s1->str; register char *c2 = s2->str; -#if 1 - /* this should be faster */ - if (len != s2->len) { - return (len < s2->len) ? -1 : 1; - } else { - return strncmp(c1, c2, len); - } +#if 0 + /* this should be faster ? */ + return strcmp(c1, c2); #else - register char *ce = c1 + len; - if (len != s2->len) return (len < s2->len ) ? -1 : 1; - for (; c1 != ce ; ++c1, ++c2) { - if (*c1 != *c2) return ((*c1 < *c2) ? -1 : 1); + register int len1 = s1->len; + register int len2 = s2->len; + if (len1 < len2) { + register char *ce = c1 + len1; + for (; c1 != ce ; ++c1, ++c2) { + if (*c1 != *c2) return ((*c1 < *c2) ? -1 : 1); + } + return -1; + } else { + register char *ce = c2 + len2; + for (; c2 != ce ; ++c1, ++c2) { + if (*c1 != *c2) return ((*c1 < *c2) ? -1 : 1); + } + return (len1 == len2) ? 0 : 1; } - return 0; #endif }