1.1 --- a/ucx/string.c Wed Jul 17 12:32:03 2013 +0200 1.2 +++ b/ucx/string.c Wed Jul 17 15:56:01 2013 +0200 1.3 @@ -33,17 +33,17 @@ 1.4 #include "string.h" 1.5 #include "allocator.h" 1.6 1.7 -sstr_t sstr(char *s) { 1.8 +sstr_t sstr(char *cstring) { 1.9 sstr_t string; 1.10 - string.ptr = s; 1.11 - string.length = strlen(s); 1.12 + string.ptr = cstring; 1.13 + string.length = strlen(cstring); 1.14 return string; 1.15 } 1.16 1.17 -sstr_t sstrn(char *s, size_t n) { 1.18 +sstr_t sstrn(char *cstring, size_t length) { 1.19 sstr_t string; 1.20 - string.ptr = s; 1.21 - string.length = n; 1.22 + string.ptr = cstring; 1.23 + string.length = length; 1.24 return string; 1.25 } 1.26 1.27 @@ -52,7 +52,7 @@ 1.28 size_t size = s.length; 1.29 va_start(ap, s); 1.30 1.31 - for (size_t i = 0 ; i < n-1 ; i++) { 1.32 + for (size_t i = 1 ; i < n ; i++) { 1.33 sstr_t str = va_arg(ap, sstr_t); 1.34 size += str.length; 1.35 } 1.36 @@ -175,25 +175,20 @@ 1.37 } 1.38 1.39 int sstrcmp(sstr_t s1, sstr_t s2) { 1.40 - return strncmp(s1.ptr, s2.ptr, s1.length>s2.length ? s2.length: s1.length); 1.41 + if (s1.length == s2.length) { 1.42 + return memcmp(s1.ptr, s2.ptr, s1.length); 1.43 + } else if (s1.length > s2.length) { 1.44 + return 1; 1.45 + } else { 1.46 + return -1; 1.47 + } 1.48 } 1.49 1.50 sstr_t sstrdup(sstr_t s) { 1.51 - sstr_t newstring; 1.52 - newstring.ptr = (char*) malloc(s.length + 1); 1.53 - if (newstring.ptr) { 1.54 - newstring.length = s.length; 1.55 - newstring.ptr[newstring.length] = 0; 1.56 - 1.57 - memcpy(newstring.ptr, s.ptr, s.length); 1.58 - } else { 1.59 - newstring.length = 0; 1.60 - } 1.61 - 1.62 - return newstring; 1.63 + return sstrdupa(ucx_default_allocator(), s); 1.64 } 1.65 1.66 -sstr_t sstrdup_alloc(UcxAllocator *allocator, sstr_t s) { 1.67 +sstr_t sstrdupa(UcxAllocator *allocator, sstr_t s) { 1.68 sstr_t newstring; 1.69 newstring.ptr = (char*)allocator->malloc(allocator->pool, s.length + 1); 1.70 if (newstring.ptr) {