xplist: Prevent memory leak(s) when parsing fails

Credit to OSS-Fuzz
diff --git a/src/xplist.c b/src/xplist.c
index 022f1cd..f896030 100644
--- a/src/xplist.c
+++ b/src/xplist.c
@@ -1221,7 +1221,7 @@
                         if (!keyname) {
                             PLIST_XML_ERR("missing key name while adding dict item\n");
                             ctx->err++;
-                            break;
+                            goto err_out;
                         }
                         plist_dict_set_item(parent, keyname, subnode);
                         break;
@@ -1232,7 +1232,7 @@
                         /* should not happen */
                         PLIST_XML_ERR("parent is not a structered node\n");
                         ctx->err++;
-                        break;
+                        goto err_out;
                     }
                 }
                 if (!is_empty && (data->type == PLIST_DICT || data->type == PLIST_ARRAY)) {