aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPetri Lehtinen <petri@digip.org>2009-10-15 20:54:32 +0300
committerPetri Lehtinen <petri@digip.org>2009-10-15 20:54:32 +0300
commit79009e62c10bab0869d61edfaa6c813f03f027bc (patch)
tree803fdaf31c3886614a68008b72c03cd8dcbda54f
parent76999799ed675a8d6922a8f7c61cf1712f6f3d1f (diff)
downloadjansson-79009e62c10bab0869d61edfaa6c813f03f027bc.zip
jansson-79009e62c10bab0869d61edfaa6c813f03f027bc.tar.gz
jansson-79009e62c10bab0869d61edfaa6c813f03f027bc.tar.bz2
json_dumps: Close the strbuffer if dumping fails
-rw-r--r--src/dump.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/dump.c b/src/dump.c
index dad64f8..1ab1140 100644
--- a/src/dump.c
+++ b/src/dump.c
@@ -242,11 +242,15 @@ char *json_dumps(const json_t *json, unsigned long flags)
if(strbuffer_init(&strbuff))
return NULL;
- if(do_dump(json, flags, 0, dump_to_strbuffer, (void *)&strbuff))
+ if(do_dump(json, flags, 0, dump_to_strbuffer, (void *)&strbuff)) {
+ strbuffer_close(&strbuff);
return NULL;
+ }
- if(dump_to_strbuffer("\n", 1, (void *)&strbuff))
+ if(dump_to_strbuffer("\n", 1, (void *)&strbuff)) {
+ strbuffer_close(&strbuff);
return NULL;
+ }
result = strdup(strbuffer_value(&strbuff));
strbuffer_close(&strbuff);