]> git.ipfire.org Git - thirdparty/qemu.git/commitdiff
paaudio: fix possible resource leak
authorKővágó, Zoltán <dirty.ice.hu@gmail.com>
Wed, 3 Jun 2015 21:03:53 +0000 (23:03 +0200)
committerGerd Hoffmann <kraxel@redhat.com>
Mon, 15 Jun 2015 10:42:48 +0000 (12:42 +0200)
qpa_audio_init did not clean up resources properly if the initialization
failed. This hopefully fixes it.

Signed-off-by: Kővágó, Zoltán <DirtY.iCE.hu@gmail.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
audio/paaudio.c

index 35e888711250ce595545338f17f20cb1bb4ad66e..fea607166f02307455965f4b33ca3130f390d39c 100644 (file)
@@ -47,6 +47,8 @@ typedef struct {
     paaudio *g;
 } PAVoiceIn;
 
+static void qpa_audio_fini(void *opaque);
+
 static void GCC_FMT_ATTR (2, 3) qpa_logerr (int err, const char *fmt, ...)
 {
     va_list ap;
@@ -814,6 +816,8 @@ static void *qpa_audio_init (void)
 {
     paaudio *g = g_malloc(sizeof(paaudio));
     g->conf = glob_conf;
+    g->mainloop = NULL;
+    g->context = NULL;
 
     g->mainloop = pa_threaded_mainloop_new ();
     if (!g->mainloop) {
@@ -867,7 +871,7 @@ unlock_and_fail:
     pa_threaded_mainloop_unlock (g->mainloop);
 fail:
     AUD_log (AUDIO_CAP, "Failed to initialize PA context");
-    g_free(g);
+    qpa_audio_fini(g);
     return NULL;
 }