diff -r 965fd17ed9cf -r 234920008754 ucx/string.c --- a/ucx/string.c Wed Jul 17 12:32:03 2013 +0200 +++ b/ucx/string.c Wed Jul 17 15:56:01 2013 +0200 @@ -33,17 +33,17 @@ #include "string.h" #include "allocator.h" -sstr_t sstr(char *s) { +sstr_t sstr(char *cstring) { sstr_t string; - string.ptr = s; - string.length = strlen(s); + string.ptr = cstring; + string.length = strlen(cstring); return string; } -sstr_t sstrn(char *s, size_t n) { +sstr_t sstrn(char *cstring, size_t length) { sstr_t string; - string.ptr = s; - string.length = n; + string.ptr = cstring; + string.length = length; return string; } @@ -52,7 +52,7 @@ size_t size = s.length; va_start(ap, s); - for (size_t i = 0 ; i < n-1 ; i++) { + for (size_t i = 1 ; i < n ; i++) { sstr_t str = va_arg(ap, sstr_t); size += str.length; } @@ -175,25 +175,20 @@ } int sstrcmp(sstr_t s1, sstr_t s2) { - return strncmp(s1.ptr, s2.ptr, s1.length>s2.length ? s2.length: s1.length); + if (s1.length == s2.length) { + return memcmp(s1.ptr, s2.ptr, s1.length); + } else if (s1.length > s2.length) { + return 1; + } else { + return -1; + } } sstr_t sstrdup(sstr_t s) { - sstr_t newstring; - newstring.ptr = (char*) malloc(s.length + 1); - if (newstring.ptr) { - newstring.length = s.length; - newstring.ptr[newstring.length] = 0; - - memcpy(newstring.ptr, s.ptr, s.length); - } else { - newstring.length = 0; - } - - return newstring; + return sstrdupa(ucx_default_allocator(), s); } -sstr_t sstrdup_alloc(UcxAllocator *allocator, sstr_t s) { +sstr_t sstrdupa(UcxAllocator *allocator, sstr_t s) { sstr_t newstring; newstring.ptr = (char*)allocator->malloc(allocator->pool, s.length + 1); if (newstring.ptr) {