strbuffer: Optimize string termination
authorPetri Lehtinen <petri@digip.org>
Tue, 30 Jun 2009 11:39:55 +0000 (14:39 +0300)
committerPetri Lehtinen <petri@digip.org>
Sat, 4 Jul 2009 10:19:41 +0000 (13:19 +0300)
Do not zero all of the memory, just the first unused byte to make the
string null terminated.

src/strbuffer.c
src/strbuffer.h

index 6674f49..c6d412f 100644 (file)
@@ -16,7 +16,8 @@ int strbuffer_init(strbuffer_t *strbuff)
     if(!strbuff->value)
         return -1;
 
-    memset(strbuff->value, 0, strbuff->size);
+    /* initialize to empty */
+    strbuff->value[0] = '\0';
     return 0;
 }
 
@@ -55,13 +56,11 @@ int strbuffer_append_bytes(strbuffer_t *strbuff, const char *data, int size)
         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;
+    strbuff->value[strbuff->length] = '\0';
 
     return 0;
 }
index f5344b8..c77be3c 100644 (file)
@@ -3,8 +3,8 @@
 
 typedef struct {
     char *value;
-    int length;
-    int size;
+    int length;   /* bytes used */
+    int size;     /* bytes allocated */
 } strbuffer_t;
 
 int strbuffer_init(strbuffer_t *strbuff);