components/desktop/thunderbird/patches/thunderbird31-504-append-pulseaudio-symbols.patch
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/components/desktop/thunderbird/patches/thunderbird31-504-append-pulseaudio-symbols.patch Mon Jan 11 09:27:45 2016 -0800
@@ -0,0 +1,64 @@
+SPARC architecture specific patch. Probably cannot send upstream.
+
+--- comm-esr31/mozilla/media/libcubeb/src/cubeb_pulse.c.orig 2015-03-30 22:18:12.000000000 +0530
++++ comm-esr31/mozilla/media/libcubeb/src/cubeb_pulse.c 2015-05-08 17:54:35.369052446 +0530
+@@ -13,6 +13,11 @@
+ #include "cubeb/cubeb.h"
+ #include "cubeb-internal.h"
+
++#ifdef __sparc
++#define pa_nop() do {} while (0)
++#define MAX_ALLOC_SIZE (1024*1024*96)
++#define pa_assert(expr) pa_nop()
++#endif
+ #ifdef DISABLE_LIBPULSE_DLOPEN
+ #define WRAP(x) x
+ #else
+@@ -675,3 +678,47 @@ static struct cubeb_ops const pulse_ops
+ .stream_get_position = pulse_stream_get_position,
+ .stream_get_latency = pulse_stream_get_latency
+ };
++
++#ifdef __sparc
++void* pa_xmalloc0(size_t size) {
++ void *p;
++ pa_assert(size > 0);
++ pa_assert(size < MAX_ALLOC_SIZE);
++
++ if (!(p = calloc(1, size)))
++ exit(1);
++
++ return p;
++}
++
++void *pa_xrealloc(void *ptr, size_t size) {
++ void *p;
++ pa_assert(size > 0);
++ pa_assert(size < MAX_ALLOC_SIZE);
++
++ if (!(p = realloc(ptr, size)))
++ exit(1);
++ return p;
++}
++
++void* pa_xmalloc(size_t size) {
++ void *p;
++ pa_assert(size > 0);
++ pa_assert(size < MAX_ALLOC_SIZE);
++
++ if (!(p = malloc(size)))
++ exit(1);
++
++ return p;
++}
++
++void* pa_xmemdup(const void *p, size_t l) {
++ if (!p)
++ return NULL;
++ else {
++ char *r = pa_xmalloc(l);
++ memcpy(r, p, l);
++ return r;
++ }
++}
++#endif