From 9b87077e93e8ede8ebd18e465d40c310baba8bbb Mon Sep 17 00:00:00 2001
From: notaz <notasas@gmail.com>
Date: Tue, 3 Feb 2015 01:27:18 +0200
Subject: [PATCH] alsa: don't leak memory

---
 linux/sndout_alsa.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/linux/sndout_alsa.c b/linux/sndout_alsa.c
index 95cc391..f1d9ca3 100644
--- a/linux/sndout_alsa.c
+++ b/linux/sndout_alsa.c
@@ -72,9 +72,7 @@ int sndout_alsa_start(int rate_, int stereo)
 	snd_pcm_hw_params_get_period_size(hwparams, &period_size, NULL);
 	snd_pcm_hw_params_get_channels(hwparams, &channels);
 
-	silent_period = realloc(silent_period, period_size * 2 * channels);
-	if (silent_period != NULL)
-		memset(silent_period, 0, period_size * 2 * channels);
+	silent_period = calloc(period_size * channels, 2);
 
 	ret = snd_pcm_prepare(handle);
 	if (ret != 0) {
@@ -104,6 +102,9 @@ void sndout_alsa_stop(void)
 	int ret = snd_pcm_drop(handle);
 	if (ret != 0)
 		fprintf(stderr, PFX "snd_pcm_drop failed: %d\n", ret);
+
+	free(silent_period);
+	silent_period = NULL;
 }
 
 void sndout_alsa_wait(void)
-- 
2.39.5