aboutsummaryrefslogtreecommitdiff
path: root/docs/examples/xmlstream.c
diff options
context:
space:
mode:
authorKruzya <CrazyHackGUT@users.noreply.github.com>2018-09-15 08:55:11 +0300
committerDaniel Gustafsson <daniel@yesql.se>2018-09-17 14:07:47 +0200
commit23524bf85b887adbc513bc015c9530355967bc04 (patch)
tree0cc1999260c30e1941c72d5185e0a1ccce28e02c /docs/examples/xmlstream.c
parent927cb3708e29fd88dcfadb9444d0dc93dc2aa4b2 (diff)
examples: Fix memory leaks from realloc errors
Make sure to not overwrite the reallocated pointer in realloc() calls to avoid a memleak on memory errors.
Diffstat (limited to 'docs/examples/xmlstream.c')
-rw-r--r--docs/examples/xmlstream.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/docs/examples/xmlstream.c b/docs/examples/xmlstream.c
index 9ee4a2e88..296ae3b26 100644
--- a/docs/examples/xmlstream.c
+++ b/docs/examples/xmlstream.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -69,14 +69,15 @@ static void characterDataHandler(void *userData, const XML_Char *s, int len)
struct ParserStruct *state = (struct ParserStruct *) userData;
struct MemoryStruct *mem = &state->characters;
- mem->memory = realloc(mem->memory, mem->size + len + 1);
- if(mem->memory == NULL) {
+ char *ptr = realloc(mem->memory, mem->size + len + 1);
+ if(!ptr) {
/* Out of memory. */
fprintf(stderr, "Not enough memory (realloc returned NULL).\n");
state->ok = 0;
return;
}
+ mem->memory = ptr;
memcpy(&(mem->memory[mem->size]), s, len);
mem->size += len;
mem->memory[mem->size] = 0;