From 060eda6b1846968aa40b0d38dcf92ac46f933417 Mon Sep 17 00:00:00 2001 From: Aaron Burghardt Date: Mon, 7 Dec 2015 16:16:40 +0100 Subject: Node.cpp: let plist_t operations free _node when in a container. Fixes libimobiledevice/libplist#50. --- src/Node.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/Node.cpp b/src/Node.cpp index aaadd52..3da401e 100644 --- a/src/Node.cpp +++ b/src/Node.cpp @@ -88,7 +88,12 @@ Node::Node(plist_type type, Node* parent) : _parent(parent) Node::~Node() { - plist_free(_node); + /* If the Node is in a container, let _node be cleaned up by + * operations on the parent plist_t. Otherwise, duplicate frees + * occur when a Node is removed from or replaced in a Dictionary. + */ + if (_parent == NULL) + plist_free(_node); _node = NULL; _parent = NULL; } -- cgit v1.1-32-gdbae