Package: libao4
Version: 1.0.0-4
Severity: important
Tags: upstream

libao crashes for some applications when pulse plugin is used. Bug report in
upstream: https://trac.xiph.org/ticket/1689


-- System Information:
Debian Release: squeeze/sid
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: i386 (i686)

Kernel: Linux 2.6.33.1 (SMP w/1 CPU core)
Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages libao4 depends on:
ii  libao-common                  1.0.0-4    Cross Platform Audio Output Librar
ii  libc6                         2.10.2-6   Embedded GNU C Library: Shared lib

libao4 recommends no packages.

Versions of packages libao4 suggests:
ii  libasound2                    1.0.22-2   shared library for ALSA applicatio
ii  libaudio2                     1.9.2-3    Network Audio System - shared libr
ii  libesd0                       0.2.41-7   Enlightened Sound Daemon - Shared 
ii  libpulse0                     0.9.21-1.2 PulseAudio client libraries

-- no debconf information
Index: src/plugins/pulse/ao_pulse.c
===================================================================
--- src/plugins/pulse/ao_pulse.c	(revision 17144)
+++ src/plugins/pulse/ao_pulse.c	(working copy)
@@ -227,7 +227,7 @@
     }
 
 
-    if (!(internal->simple = pa_simple_new(internal->server, fn ? t : "libao", PA_STREAM_PLAYBACK, internal->sink, fn ? t2 : "libao playback stream", &ss, &map, NULL, NULL)))
+    if (!(internal->simple = pa_simple_new(internal->server, fn ? t : "libao", PA_STREAM_PLAYBACK, internal->sink, fn ? t2 : "libao playback stream", &ss, device->input_map ? &map : NULL, NULL, NULL)))
         return 0;
 
     device->driver_byte_format = AO_FMT_NATIVE;
@@ -247,9 +247,11 @@
     assert(device && device->internal);
     ao_pulse_internal *internal = (ao_pulse_internal *) device->internal;
 
-    pa_simple_drain(internal->simple, NULL);
-    pa_simple_free(internal->simple);
-    internal->simple = NULL;
+    if (internal->simple) {
+        pa_simple_drain(internal->simple, NULL);
+        pa_simple_free(internal->simple);
+        internal->simple = NULL;
+    }
 
     return 1;
 }

Reply via email to