summaryrefslogtreecommitdiffstats
path: root/src/engine/LV2Node.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2010-02-04 23:53:37 +0000
committerDavid Robillard <d@drobilla.net>2010-02-04 23:53:37 +0000
commit16edd7b1272e91a5ef28e8b9211b8d5721fafe23 (patch)
treedeb678753bb3e74c9f8da1121b7a9c79c13ec753 /src/engine/LV2Node.cpp
parent6f3a80bb9c80b8e0cf486d198c2e107512b2cc46 (diff)
downloadingen-16edd7b1272e91a5ef28e8b9211b8d5721fafe23.tar.gz
ingen-16edd7b1272e91a5ef28e8b9211b8d5721fafe23.tar.bz2
ingen-16edd7b1272e91a5ef28e8b9211b8d5721fafe23.zip
Fix a bunch of memory leaks.
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@2429 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/engine/LV2Node.cpp')
-rw-r--r--src/engine/LV2Node.cpp13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/engine/LV2Node.cpp b/src/engine/LV2Node.cpp
index 2e176abe..cdc29b15 100644
--- a/src/engine/LV2Node.cpp
+++ b/src/engine/LV2Node.cpp
@@ -183,6 +183,7 @@ LV2Node::instantiate(BufferFactory& bufs)
Path port_path;
PortImpl* port = NULL;
+ bool ret = true;
float* min_values = new float[num_ports];
float* max_values = new float[num_ports];
@@ -271,7 +272,8 @@ LV2Node::instantiate(BufferFactory& bufs)
_ports = NULL;
delete _instances;
_instances = NULL;
- return false;
+ ret = false;
+ goto done;
}
if (val.type() == Atom::NIL)
@@ -325,9 +327,16 @@ LV2Node::instantiate(BufferFactory& bufs)
_ports->at(j) = port;
}
+done:
+ delete[] min_values;
+ delete[] max_values;
delete[] def_values;
+ slv2_value_free(context_pred);
+ slv2_value_free(default_pred);
+ slv2_value_free(min_size_pred);
+ slv2_value_free(port_property_pred);
- return true;
+ return ret;
}