Fix for initialization of buffer in grow_buffer.
authorPeter Verthez <Peter.Verthez@advalvas.be>
Sat, 21 Dec 2002 15:37:00 +0000 (15:37 +0000)
committerPeter Verthez <Peter.Verthez@advalvas.be>
Sat, 21 Dec 2002 15:37:00 +0000 (15:37 +0000)
gedcom/buffer.c

index 8873529996a66cf7cee5d92fe0a355d03f0028a1..0c3e17ca8cc094ad4925f47924266faafe23bbca 100644 (file)
@@ -70,9 +70,17 @@ void init_buffer(struct safe_buffer *b)
 
 void grow_buffer(struct safe_buffer *b)
 {
+  char* new_buffer;
+  size_t old_size = b->bufsize;
   b->bufsize *= 2;
-  b->buffer = realloc(b->buffer, b->bufsize);
-  b->buf_end = b->buffer + b->buflen;
+  new_buffer = realloc(b->buffer, b->bufsize);
+  if (new_buffer) {
+    b->buffer = new_buffer;
+    memset(b->buffer + old_size, 0, b->bufsize - old_size);
+    b->buf_end = b->buffer + b->buflen;
+  }
+  else
+    b->buffer = NULL;
 }
 
 int safe_buf_vappend(struct safe_buffer *b, const char *s, va_list ap)