summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2014-03-23 00:46:12 +0100
committerRobin Gareus <robin@gareus.org>2014-03-23 00:46:12 +0100
commit89e63b4bce0fbbbdfe5c2685e929c0f46bbbf7ca (patch)
treee1be268c907d7855b107f9fb15f816a8651aad9e
parent167991ecebe30847f76c028bd501f49968271069 (diff)
fix some memory leaks
-rw-r--r--gtk2_ardour/analysis_window.cc1
-rw-r--r--gtk2_ardour/video_timeline.cc2
-rw-r--r--libs/ardour/audio_library.cc5
-rw-r--r--libs/ardour/linux_vst_support.cc5
-rw-r--r--libs/ardour/worker.cc2
5 files changed, 10 insertions, 5 deletions
diff --git a/gtk2_ardour/analysis_window.cc b/gtk2_ardour/analysis_window.cc
index 998ab8ab12..f653490345 100644
--- a/gtk2_ardour/analysis_window.cc
+++ b/gtk2_ardour/analysis_window.cc
@@ -374,6 +374,7 @@ AnalysisWindow::analyze_data (Gtk::Button * /*button*/)
free(buf);
free(mixbuf);
+ free(gain);
track_list_ready = true;
} /* end lock */
diff --git a/gtk2_ardour/video_timeline.cc b/gtk2_ardour/video_timeline.cc
index 8adc7bc4d0..ca1da8d693 100644
--- a/gtk2_ardour/video_timeline.cc
+++ b/gtk2_ardour/video_timeline.cc
@@ -716,7 +716,7 @@ void
VideoTimeLine::find_xjadeo () {
std::string xjadeo_file_path;
if (getenv("XJREMOTE")) {
- _xjadeo_bin = strdup(getenv("XJREMOTE")); // XXX TODO: free it?!
+ _xjadeo_bin = getenv("XJREMOTE");
} else if (find_file_in_search_path (Searchpath(Glib::getenv("PATH")), X_("xjremote"), xjadeo_file_path)) {
_xjadeo_bin = xjadeo_file_path;
}
diff --git a/libs/ardour/audio_library.cc b/libs/ardour/audio_library.cc
index 4a6089dac3..35c0972847 100644
--- a/libs/ardour/audio_library.cc
+++ b/libs/ardour/audio_library.cc
@@ -105,15 +105,15 @@ AudioLibrary::get_tags (string member)
{
vector<string> tags;
#ifdef HAVE_LRDF
+ char * uri = strdup(Glib::filename_to_uri(member).c_str());
lrdf_statement pattern;
- pattern.subject = strdup(Glib::filename_to_uri(member).c_str());
+ pattern.subject = uri;
pattern.predicate = const_cast<char*>(TAG);
pattern.object = 0;
pattern.object_type = lrdf_literal;
lrdf_statement* matches = lrdf_matches (&pattern);
- free (pattern.subject);
lrdf_statement* current = matches;
while (current != 0) {
@@ -125,6 +125,7 @@ AudioLibrary::get_tags (string member)
lrdf_free_statements (matches);
sort (tags.begin(), tags.end());
+ free (uri);
#endif
return tags;
}
diff --git a/libs/ardour/linux_vst_support.cc b/libs/ardour/linux_vst_support.cc
index 9d36905f48..f34112e24b 100644
--- a/libs/ardour/linux_vst_support.cc
+++ b/libs/ardour/linux_vst_support.cc
@@ -112,7 +112,7 @@ vstfx_new ()
void* vstfx_load_vst_library(const char* path)
{
void* dll;
- char* full_path;
+ char* full_path = NULL;
char* envdup;
char* lxvst_path;
size_t len1;
@@ -160,6 +160,7 @@ void* vstfx_load_vst_library(const char* path)
vstfx_error ("\"%s\"", lxvst_path);
len1 = strlen(lxvst_path);
+ if (full_path) free(full_path);
full_path = (char*)malloc(len1 + 1 + len2 + 1);
memcpy(full_path, lxvst_path, len1);
full_path[len1] = '/';
@@ -180,7 +181,7 @@ void* vstfx_load_vst_library(const char* path)
}
/*Free the path*/
-
+ if (full_path) free(full_path);
free(envdup);
return dll;
diff --git a/libs/ardour/worker.cc b/libs/ardour/worker.cc
index b110dc286f..5b416afa46 100644
--- a/libs/ardour/worker.cc
+++ b/libs/ardour/worker.cc
@@ -124,6 +124,7 @@ Worker::run()
while (true) {
_sem.wait();
if (_exit) {
+ if (buf) free(buf);
return;
}
@@ -135,6 +136,7 @@ Worker::run()
while (!verify_message_completeness(_requests)) {
Glib::usleep(2000);
if (_exit) {
+ if (buf) free(buf);
return;
}
}