Fix memory leak : valgrind 26/112526/1
authorSeungbae Shin <seungbae.shin@samsung.com>
Wed, 1 Feb 2017 08:46:50 +0000 (17:46 +0900)
committerSeungbae Shin <seungbae.shin@samsung.com>
Wed, 1 Feb 2017 08:46:50 +0000 (17:46 +0900)
[Version] 0.3.60
[Profile] Common
[Issue Type] Memory Leak

Change-Id: Ia45b3bb108c57f0ccdc60441cd11a23a3213846b

packaging/capi-media-audio-io.spec
src/cpp/CAudioInput.cpp
src/cpp/CPulseAudioClient.cpp
test/audio_io_test.c

index c9b320b..35d8af1 100644 (file)
@@ -1,6 +1,6 @@
 Name:           capi-media-audio-io
 Summary:        An Audio Input & Audio Output library in Tizen Native API
-Version:        0.3.59
+Version:        0.3.60
 Release:        0
 Group:          Multimedia/API
 License:        Apache-2.0
index 3887ddb..9ef53dd 100644 (file)
@@ -177,8 +177,13 @@ static bool __IsPrivilegeAllowed() {
     }
 
     o = pa_context_check_privilege(c, RECORDER_PRIVILEGE, __checkPrivilegeCb, &prData);
+    if (!o) {
+        pa_threaded_mainloop_unlock(prData.paMainloop);
+        THROW_ERROR_MSG(CAudioError::EError::ERROR_FAILED_OPERATION, "Failed to pa_context_check_privilege()");
+    }
     while (pa_operation_get_state(o) == PA_OPERATION_RUNNING)
         pa_threaded_mainloop_wait(prData.paMainloop);
+    pa_operation_unref(o);
 
     pa_threaded_mainloop_unlock(prData.paMainloop);
     pa_threaded_mainloop_stop(prData.paMainloop);
index 9733013..8fc6bec 100644 (file)
@@ -714,6 +714,7 @@ bool CPulseAudioClient::drain() throw(CAudioError) {
         while (pa_operation_get_state(o) == PA_OPERATION_RUNNING) {
             pa_threaded_mainloop_wait(__mpMainloop);
         }
+        pa_operation_unref(o);
         pa_threaded_mainloop_unlock(__mpMainloop);
     } else {
         AUDIO_IO_LOGD("drain in thread");
index 70899d3..717b8d2 100644 (file)
@@ -65,6 +65,7 @@ void play_file(char *file, int length, int ch)
        audio_out_destroy(output);
 
        fclose(fp);
+       free(buf);
 
        printf("play done\n");
 }