diff options
-rw-r--r-- | src/xplist.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/xplist.c b/src/xplist.c index ec75226..68fd3ab 100644 --- a/src/xplist.c +++ b/src/xplist.c @@ -1135,7 +1135,6 @@ static void node_from_xml(parse_ctx ctx, plist_t *plist, uint32_t depth) free(keyname); return; } - free(tag); if (subnode && !closing_tag) { /* parse sub nodes for structured types */ if (data->type == PLIST_DICT || data->type == PLIST_ARRAY) { @@ -1144,6 +1143,7 @@ static void node_from_xml(parse_ctx ctx, plist_t *plist, uint32_t depth) node_from_xml(ctx, &subnode, depth+1); if (ctx->err) { /* make sure to bail out if parsing failed */ + free(tag); free(keyname); return; } @@ -1212,8 +1212,8 @@ static void node_from_xml(parse_ctx ctx, plist_t *plist, uint32_t depth) ctx->err++; break; } - break; } + free(tag); free(keyname); keyname = NULL; plist_free(subnode); |