diff options
author | David Robillard <d@drobilla.net> | 2010-02-01 19:24:22 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2010-02-01 19:24:22 +0000 |
commit | 6e8877ee110b774caef800adbe35b21338b3372f (patch) | |
tree | 0d363e811d64da8aa8368c37830a562b1fe6e70e | |
parent | feb7439d70871aa9663e7c4218671a3c26717fbb (diff) | |
download | ingen-6e8877ee110b774caef800adbe35b21338b3372f.tar.gz ingen-6e8877ee110b774caef800adbe35b21338b3372f.tar.bz2 ingen-6e8877ee110b774caef800adbe35b21338b3372f.zip |
Fix leaks and an iterator error found by cppcheck.
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@2399 a436a847-0d15-0410-975c-d299462d15a1
-rw-r--r-- | src/engine/InputPort.cpp | 8 | ||||
-rw-r--r-- | src/engine/PatchImpl.cpp | 2 | ||||
-rw-r--r-- | src/gui/LoadPatchWindow.cpp | 4 | ||||
-rw-r--r-- | src/gui/LoadSubpatchWindow.cpp | 4 |
4 files changed, 15 insertions, 3 deletions
diff --git a/src/engine/InputPort.cpp b/src/engine/InputPort.cpp index 80ae836d..cc72a7c5 100644 --- a/src/engine/InputPort.cpp +++ b/src/engine/InputPort.cpp @@ -163,10 +163,16 @@ InputPort::remove_connection(const OutputPort* src_port) ThreadManager::assert_thread(THREAD_PROCESS); Connections::Node* connection = NULL; - for (Connections::iterator i = _connections.begin(); i != _connections.end(); ++i) + for (Connections::iterator i = _connections.begin(); i != _connections.end();) { + Connections::iterator next = i; + ++next; + if ((*i)->src_port() == src_port) connection = _connections.erase(i); + i = next; + } + if ( ! connection) { error << "[InputPort::remove_connection] Connection not found!" << endl; return NULL; diff --git a/src/engine/PatchImpl.cpp b/src/engine/PatchImpl.cpp index 96841b33..771c9d6d 100644 --- a/src/engine/PatchImpl.cpp +++ b/src/engine/PatchImpl.cpp @@ -377,6 +377,7 @@ PatchImpl::remove_port(const string& symbol) if ((*i)->symbol() == symbol) { ret = _input_ports.erase(i); found = true; + break; } } @@ -385,6 +386,7 @@ PatchImpl::remove_port(const string& symbol) if ((*i)->symbol() == symbol) { ret = _output_ports.erase(i); found = true; + break; } } diff --git a/src/gui/LoadPatchWindow.cpp b/src/gui/LoadPatchWindow.cpp index 86e0d448..cb3aaf06 100644 --- a/src/gui/LoadPatchWindow.cpp +++ b/src/gui/LoadPatchWindow.cpp @@ -72,8 +72,10 @@ LoadPatchWindow::LoadPatchWindow(BaseObjectType* cobject, const Glib::RefPtr<Gno // Add global examples directory to "shortcut folders" (bookmarks) const string examples_dir = Shared::data_file_path("patches"); DIR* d = opendir(examples_dir.c_str()); - if (d != NULL) + if (d != NULL) { add_shortcut_folder(examples_dir); + closedir(d); + } } diff --git a/src/gui/LoadSubpatchWindow.cpp b/src/gui/LoadSubpatchWindow.cpp index e580fa49..ef56a945 100644 --- a/src/gui/LoadSubpatchWindow.cpp +++ b/src/gui/LoadSubpatchWindow.cpp @@ -70,8 +70,10 @@ LoadSubpatchWindow::LoadSubpatchWindow(BaseObjectType* cobject, const Glib::RefP // Add global examples directory to "shortcut folders" (bookmarks) const string examples_dir = Shared::data_file_path("patches"); DIR* d = opendir(examples_dir.c_str()); - if (d != NULL) + if (d != NULL) { add_shortcut_folder(examples_dir); + closedir(d); + } } |