diff mbox

jack: Fixing a small memory leak

Message ID s5hbnef41x6.wl-tiwai@suse.de (mailing list archive)
State New, archived
Headers show

Commit Message

Takashi Iwai Aug. 10, 2015, 3:07 p.m. UTC
On Mon, 10 Aug 2015 16:58:25 +0200,
Valentin Corfu wrote:
> 
> 
> Hello Alsa developers,
> 
> I observed a small memory leak in alsa-plugins (jack):
> 
> ...
> ==1034== 
> ==1034== 8 bytes in 1 blocks are definitely lost in loss record 7 of 108
> ==1034==    at 0x4027E5A: calloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
> ==1034==    by 0x4035102: snd_pcm_jack_prepare (in /usr/lib/alsa-lib/libasound_module_pcm_jack.so)
> ==1034==    by 0x40D07AB: snd_pcm_ioplug_prepare (pcm_ioplug.c:145)
> ==1034==    by 0x4084961: snd_pcm_prepare (pcm.c:1052)
> ==1034==    by 0x409DDB4: snd_pcm_plugin_prepare (pcm_plugin.c:162)
> ==1034==    by 0x4084961: snd_pcm_prepare (pcm.c:1052)
> ==1034==    by 0x409DDB4: snd_pcm_plugin_prepare (pcm_plugin.c:162)
> ==1034==    by 0x4084961: snd_pcm_prepare (pcm.c:1052)
> ==1034==    by 0x4084A1D: snd_pcm_hw_params (pcm.c:838)
> ==1034==    by 0x4090013: snd_pcm_set_params (pcm.c:8053)
> ==1034==    by 0x80486EB: main (in /root/pcm_min_ok)
> ...
> ==1034== LEAK SUMMARY:
> ==1034==    definitely lost: 8 bytes in 1 blocks
> ==1034==    indirectly lost: 0 bytes in 0 blocks
> ==1034==      possibly lost: 31,311 bytes in 1,630 blocks
> ==1034==    still reachable: 5,619 bytes in 24 blocks
> ==1034==         suppressed: 0 bytes in 0 blocks
> ==1034== Reachable blocks (those to which a pointer was found) are not shown.
> ==1034== To see them, rerun with: --leak-check=full --show-leak-kinds=all
> ...

Does the patch below fix it?


Takashi

---
diff mbox

Patch

diff --git a/jack/pcm_jack.c b/jack/pcm_jack.c
index 568ec43b0924..4134f9e6498e 100644
--- a/jack/pcm_jack.c
+++ b/jack/pcm_jack.c
@@ -102,6 +102,7 @@  static void snd_pcm_jack_free(snd_pcm_jack_t *jack)
 			close(jack->fd);
 		if (jack->io.poll_fd >= 0)
 			close(jack->io.poll_fd);
+		free(jack->ports);
 		free(jack->areas);
 		free(jack);
 	}