X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;f=gedcom%2Fbuffer.c;h=0c3e17ca8cc094ad4925f47924266faafe23bbca;hb=98a5cf857ba2bc9f574b924bc7e96d5e50c0a4db;hp=8873529996a66cf7cee5d92fe0a355d03f0028a1;hpb=b433859c349f125277c5c58ad3f8c195cc3ed005;p=gedcom-parse.git diff --git a/gedcom/buffer.c b/gedcom/buffer.c index 8873529..0c3e17c 100644 --- a/gedcom/buffer.c +++ b/gedcom/buffer.c @@ -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)