Re: [pulseaudio-discuss] [PATCH] Alsa-plugins: Pulse: Fix snd_pcm_avail returning 0 in some cases

2011-04-28 Thread Colin Guthrie
'Twas brillig, and David Henningsson at 21/04/11 14:22 did gyre and gimble:
 Due to a round-off error, snd_pcm_avail could in some cases
 return 0 even though more data could be written to the stream.
 
 This was discovered by Maarten Lankhorst [1], and there is also a test
 program available that triggers this error [2].
 
 [1]
 https://tango.0pointer.de/pipermail/pulseaudio-discuss/2011-April/009935.html
 
 
 [2]
 https://tango.0pointer.de/pipermail/pulseaudio-discuss/attachments/20110420/3c852d6e/attachment.c

For completeness (on this list), this patch has now been committed to
alsa-lib.

Cheers

Col

-- 

Colin Guthrie
gmane(at)colin.guthr.ie
http://colin.guthr.ie/

Day Job:
  Tribalogic Limited [http://www.tribalogic.net/]
Open Source:
  Mageia Contributor [http://www.mageia.org/]
  PulseAudio Hacker [http://www.pulseaudio.org/]
  Trac Hacker [http://trac.edgewall.org/]

___
pulseaudio-discuss mailing list
pulseaudio-discuss@mail.0pointer.de
https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss


[pulseaudio-discuss] [PATCH] Alsa-plugins: Pulse: Fix snd_pcm_avail returning 0 in some cases

2011-04-21 Thread David Henningsson

Due to a round-off error, snd_pcm_avail could in some cases
return 0 even though more data could be written to the stream.

This was discovered by Maarten Lankhorst [1], and there is also a test 
program available that triggers this error [2].


[1] 
https://tango.0pointer.de/pipermail/pulseaudio-discuss/2011-April/009935.html


[2] 
https://tango.0pointer.de/pipermail/pulseaudio-discuss/attachments/20110420/3c852d6e/attachment.c



--
David Henningsson, Canonical Ltd.
http://launchpad.net/~diwic
From 73ff6f83e1e4c53181e1794bf2cec3baee7c81b7 Mon Sep 17 00:00:00 2001
From: David Henningsson david.hennings...@canonical.com
Date: Thu, 21 Apr 2011 15:10:19 +0200
Subject: [PATCH] Pulse: Fix snd_pcm_avail returning 0 in some cases

Due to a round-off error, snd_pcm_avail could in some cases
return 0 even though more data could be written to the stream.

Reported-by: Maarten Lankhorst m.b.lankho...@gmail.com
Signed-off-by: David Henningsson david.hennings...@canonical.com
---
 pulse/pcm_pulse.c |4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/pulse/pcm_pulse.c b/pulse/pcm_pulse.c
index 2df0a80..9105d4d 100644
--- a/pulse/pcm_pulse.c
+++ b/pulse/pcm_pulse.c
@@ -92,8 +92,8 @@ static int update_ptr(snd_pcm_pulse_t *pcm)
 		size -= pcm-offset;
 
 	/* Prevent accidental overrun of the fake ringbuffer */
-	if (size = pcm-buffer_attr.tlength)
-		size = pcm-buffer_attr.tlength-1;
+	if (size  pcm-buffer_attr.tlength - pcm-frame_size)
+		size = pcm-buffer_attr.tlength - pcm-frame_size;
 
 	if (size  pcm-last_size) {
 		pcm-ptr += size - pcm-last_size;
-- 
1.7.4.1

___
pulseaudio-discuss mailing list
pulseaudio-discuss@mail.0pointer.de
https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss