Changeset 2088
- Timestamp:
- 06/03/09 15:30:45 (15 months ago)
- Files:
-
- 1 modified
-
trunk/slv2/src/util.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/slv2/src/util.c
r2000 r2088 29 29 slv2_strjoin(const char* first, ...) 30 30 { 31 /* FIXME: This is, in fact, as stupid as it looks */ 31 size_t len = strlen(first); 32 char* result = malloc(len + 1); 32 33 33 size_t len = strlen(first);34 char* result = NULL; 34 memcpy(result, first, len); 35 35 36 va_list args; 36 37 37 va_start(args, first); 38 38 while (1) { … … 40 40 if (s == NULL) 41 41 break; 42 len += strlen(s); 42 43 const size_t this_len = strlen(s); 44 result = realloc(result, len + this_len + 1); 45 memcpy(result + len, s, this_len); 46 len += this_len; 43 47 } 44 48 va_end(args); 45 49 46 result = malloc(len + 1); 47 if (!result) 48 return NULL; 49 50 strcpy(result, first); 51 va_start(args, first); 52 while (1) { 53 const char* const s = va_arg(args, const char *); 54 if (s == NULL) 55 break; 56 strcat(result, s); 57 } 58 va_end(args); 50 result[len] = '\0'; 59 51 60 52 return result;
