fix some memory leaks
authorRobin Gareus <robin@gareus.org>
Sat, 22 Mar 2014 23:46:12 +0000 (00:46 +0100)
committerRobin Gareus <robin@gareus.org>
Sat, 22 Mar 2014 23:46:12 +0000 (00:46 +0100)
gtk2_ardour/analysis_window.cc
gtk2_ardour/video_timeline.cc
libs/ardour/audio_library.cc
libs/ardour/linux_vst_support.cc
libs/ardour/worker.cc

index 998ab8ab12fe5f3a2d07bdcf478cb073b83760f4..f653490345b70e48598789c397fe24daff6d5cbd 100644 (file)
@@ -374,6 +374,7 @@ AnalysisWindow::analyze_data (Gtk::Button * /*button*/)
 
                free(buf);
                free(mixbuf);
+               free(gain);
 
                track_list_ready = true;
        } /* end lock */
index 8adc7bc4d093b7b4bb8463e3a56d2dd64142c0a4..ca1da8d693d60bf40c7d497901f43f06497447af 100644 (file)
@@ -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;
        }
index 4a6089dac3668ba6273a7d1c10b6122c4b51a9e6..35c0972847c16d20d0ca19c4d339b0f15d12ff01 100644 (file)
@@ -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;
 }
index 9d36905f489465614df4ab28a7aecb0341577f40..f34112e24b9a648d79d501b4bc5c487c28e88ed6 100644 (file)
@@ -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;
index b110dc286f875454f272cfef6735267a5f7d6407..5b416afa4629fe0e824348f966bd2c43f8a9fd69 100644 (file)
@@ -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;
                        }
                }