From: Zbigniew Jędrzejewski-Szmek Date: Sun, 31 Mar 2013 00:32:56 +0000 (-0400) Subject: strbuf: fix leak on memory error X-Git-Tag: v201~118 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=a9c307e5d2157c561eae7fc76303cadf7a77b99e strbuf: fix leak on memory error Not very likely, but let's fix it for the matter of principle. --- diff --git a/src/shared/strbuf.c b/src/shared/strbuf.c index 915cd3ac9..abc5c0dd2 100644 --- a/src/shared/strbuf.c +++ b/src/shared/strbuf.c @@ -158,14 +158,18 @@ ssize_t strbuf_add_string(struct strbuf *str, const char *s, size_t len) { node_child = new0(struct strbuf_node, 1); if (!node_child) return -ENOMEM; - str->nodes_count++; node_child->value_off = off; node_child->value_len = len; /* extend array, add new entry, sort for bisection */ child = realloc(node->children, (node->children_count + 1) * sizeof(struct strbuf_child_entry)); - if (!child) + if (!child) { + free(node_child); return -ENOMEM; + } + + str->nodes_count++; + node->children = child; node->children[node->children_count].c = c; node->children[node->children_count].child = node_child;