diff options
Diffstat (limited to 'lib/libgeom/geom_xml2tree.c')
| -rw-r--r-- | lib/libgeom/geom_xml2tree.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/lib/libgeom/geom_xml2tree.c b/lib/libgeom/geom_xml2tree.c index 2c23361b16667..2a373d7f31d54 100644 --- a/lib/libgeom/geom_xml2tree.c +++ b/lib/libgeom/geom_xml2tree.c @@ -275,18 +275,20 @@ EndElement(void *userData, const char *name) XML_StopParser(mt->parser, 0); warn("Cannot allocate memory during processing of '%s' " "element", name); + free(p); return; } gc->lg_name = strdup(name); if (gc->lg_name == NULL) { - free(gc); mt->error = errno; XML_StopParser(mt->parser, 0); warn("Cannot allocate memory during processing of '%s' " "element", name); + free(gc); + free(p); return; } - gc->lg_val = p ? p : strdup("1"); + gc->lg_val = p; LIST_INSERT_HEAD(c, gc, lg_config); return; } |
