diff options
author | Marcelo Matus <mmatus@acms.arizona.edu> | 2004-09-27 08:41:51 +0000 |
---|---|---|
committer | Marcelo Matus <mmatus@acms.arizona.edu> | 2004-09-27 08:41:51 +0000 |
commit | f903ec5ac91f9e6adecf669f390aabf8b64ec43f (patch) | |
tree | 3737471c249540fb4e5860d6f5f2defb0a9d77bc /Source/DOH | |
parent | 82f2ee5db5c5bda010e4c0feee237e18fd9f73fb (diff) | |
download | swig-f903ec5ac91f9e6adecf669f390aabf8b64ec43f.tar.gz |
back to strncmp, is not clear if memcmp is faster
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@6272 626c5289-ae23-0410-ae9c-e8d60b6d4f22
Diffstat (limited to 'Source/DOH')
-rw-r--r-- | Source/DOH/string.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/Source/DOH/string.c b/Source/DOH/string.c index 082ce1c8d..977b9f2c2 100644 --- a/Source/DOH/string.c +++ b/Source/DOH/string.c @@ -113,19 +113,20 @@ String_cmp(DOH *so1, DOH *so2) { String * s1 = (String *) ObjData(so1); String * s2 = (String *) ObjData(so2); - register char *c1; - register char *c2; register int len = s1->len; - if (len != s2->len) return (len < s2->len ) ? -1 : 1; - c1 = s1->str; - c2 = s2->str; + register char *c1 = s1->str; + register char *c2 = s2->str; #if 1 - /* this is better, but it could be not present in all the - systems ? */ - return memcmp(c1, c2, len); + /* this is better, but strncmp could be not present in all the systems? */ + if (len != s2->len) { + return (len < s2->len) ? -1 : 1; + } else { + return strncmp(c1, c2, len); + } #else - /* faster loop with nonzero predicates */ - for (; len ; --len,++c1,++c2) { + 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); } return 0; |