]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - sound/core/pcm_lib.c
[ALSA] Fix memory leaks in error path of control.c
[linux-2.6-omap-h63xx.git] / sound / core / pcm_lib.c
index c58ec67d1cbfbebdde187bb5c5cfe1d4d1b4b038..eeba2f060955d3b3de52aaa39a3ae48d8d64f494 100644 (file)
@@ -56,9 +56,8 @@ void snd_pcm_playback_silence(struct snd_pcm_substream *substream, snd_pcm_ufram
                                runtime->silence_filled = 0;
                        runtime->silence_start = runtime->control->appl_ptr;
                }
-               if (runtime->silence_filled == runtime->buffer_size)
+               if (runtime->silence_filled >= runtime->buffer_size)
                        return;
-               snd_assert(runtime->silence_filled <= runtime->buffer_size, return);
                noise_dist = snd_pcm_playback_hw_avail(runtime) + runtime->silence_filled;
                if (noise_dist >= (snd_pcm_sframes_t) runtime->silence_threshold)
                        return;
@@ -2006,8 +2005,8 @@ void snd_pcm_tick_prepare(struct snd_pcm_substream *substream)
                           runtime->silence_filled < runtime->buffer_size) {
                        snd_pcm_sframes_t noise_dist;
                        noise_dist = snd_pcm_playback_hw_avail(runtime) + runtime->silence_filled;
-                       snd_assert(noise_dist <= (snd_pcm_sframes_t)runtime->silence_threshold, );
-                       frames = noise_dist - runtime->silence_threshold;
+                       if (noise_dist > (snd_pcm_sframes_t)runtime->silence_threshold)
+                               frames = noise_dist - runtime->silence_threshold;
                }
                avail = snd_pcm_playback_avail(runtime);
        } else {