1.1 --- a/ucx/string.c Fri Oct 05 10:25:33 2012 +0200 1.2 +++ b/ucx/string.c Fri Oct 05 10:38:51 2012 +0200 1.3 @@ -58,11 +58,24 @@ 1.4 va_list ap; 1.5 va_start(ap, c1); 1.6 s.ptr[0] = 0; 1.7 - 1.8 - s.ptr = strncat (s.ptr, c1.ptr, s.length); 1.9 + 1.10 + size_t len = s.length; 1.11 + size_t cplen = c1.length > len ? len : c1.length; 1.12 + char *ptr = s.ptr; 1.13 + 1.14 + memcpy(ptr, c1.ptr, cplen); 1.15 + len -= cplen; 1.16 + ptr += cplen; 1.17 for (int i=0;i<n-1;i++) { 1.18 sstr_t str = va_arg (ap, sstr_t); 1.19 - s.ptr = strncat (s.ptr, str.ptr, s.length); 1.20 + cplen = str.length > len ? len : str.length; 1.21 + if(cplen <= 0) { 1.22 + va_end(ap); 1.23 + return s; 1.24 + } 1.25 + memcpy(ptr, str.ptr, cplen); 1.26 + len -= cplen; 1.27 + ptr += cplen; 1.28 } 1.29 va_end(ap); 1.30