X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;f=gedcom%2Fbuffer.c;fp=gedcom%2Fbuffer.c;h=0c3e17ca8cc094ad4925f47924266faafe23bbca;hb=15c373d0e5dfc9d970e41f705dcfdbe2812be019;hp=8873529996a66cf7cee5d92fe0a355d03f0028a1;hpb=4a4c63a19ac9962669b70f9c073cfb3801aec781;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)