Do not zero all of the memory, just the first unused byte to make the
string null terminated.
if(!strbuff->value)
return -1;
if(!strbuff->value)
return -1;
- memset(strbuff->value, 0, strbuff->size);
+ /* initialize to empty */
+ strbuff->value[0] = '\0';
strbuff->value = realloc(strbuff->value, strbuff->size);
if(!strbuff->value)
return -1;
strbuff->value = realloc(strbuff->value, strbuff->size);
if(!strbuff->value)
return -1;
-
- memset(strbuff->value + strbuff->length + size, 0,
- strbuff->size - strbuff->length - size);
}
memcpy(strbuff->value + strbuff->length, data, size);
strbuff->length += size;
}
memcpy(strbuff->value + strbuff->length, data, size);
strbuff->length += size;
+ strbuff->value[strbuff->length] = '\0';
typedef struct {
char *value;
typedef struct {
char *value;
- int length;
- int size;
+ int length; /* bytes used */
+ int size; /* bytes allocated */
} strbuffer_t;
int strbuffer_init(strbuffer_t *strbuff);
} strbuffer_t;
int strbuffer_init(strbuffer_t *strbuff);