Go to file
Bastien Nocera a28e23d900 gvc-mixer-control: Fix double-free when setting headset
The callbacks will be called repeatedly, once with data, and later
on with eol == 0. Make sure to only free it when we get the eol call
instead of once we've applied the settings.

Example valgrind output:
==31715== Invalid read of size 8
==31715==    at 0x24529E09: port_status_data_free (gvc-mixer-control.c:2079)
==31715==    by 0x1DB81344: ??? (in /usr/lib64/libpulse.so.0.18.2)
==31715==    by 0x1DDF3FE0: ??? (in /usr/lib64/pulseaudio/libpulsecommon-7.1.so)
==31715==    by 0x1DDF436A: pa_pdispatch_run (in /usr/lib64/pulseaudio/libpulsecommon-7.1.so)
==31715==    by 0x1DB7507D: ??? (in /usr/lib64/libpulse.so.0.18.2)
==31715==    by 0x1DDF6B5E: ??? (in /usr/lib64/pulseaudio/libpulsecommon-7.1.so)
==31715==    by 0x1DDF91BA: ??? (in /usr/lib64/pulseaudio/libpulsecommon-7.1.so)
==31715==    by 0x1DDF9568: ??? (in /usr/lib64/pulseaudio/libpulsecommon-7.1.so)
==31715==    by 0x1DDF9DF9: ??? (in /usr/lib64/pulseaudio/libpulsecommon-7.1.so)
==31715==    by 0x1D96202A: ??? (in /usr/lib64/libpulse-mainloop-glib.so.0.0.5)
==31715==    by 0x7AA7CF9: g_main_dispatch (gmain.c:3154)
==31715==    by 0x7AA7CF9: g_main_context_dispatch (gmain.c:3769)
==31715==    by 0x7AA8057: g_main_context_iterate.isra.29 (gmain.c:3840)
==31715==  Address 0x2bd83480 is 0 bytes inside a block of size 16 free'd
==31715==    at 0x4C2ED6A: free (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==31715==    by 0x7AAD2AD: g_free (gmem.c:189)
==31715==    by 0x1DB81562: ??? (in /usr/lib64/libpulse.so.0.18.2)
==31715==    by 0x1DDF3FE0: ??? (in /usr/lib64/pulseaudio/libpulsecommon-7.1.so)
==31715==    by 0x1DDF436A: pa_pdispatch_run (in /usr/lib64/pulseaudio/libpulsecommon-7.1.so)
==31715==    by 0x1DB7507D: ??? (in /usr/lib64/libpulse.so.0.18.2)
==31715==    by 0x1DDF6B5E: ??? (in /usr/lib64/pulseaudio/libpulsecommon-7.1.so)
==31715==    by 0x1DDF91BA: ??? (in /usr/lib64/pulseaudio/libpulsecommon-7.1.so)
==31715==    by 0x1DDF9568: ??? (in /usr/lib64/pulseaudio/libpulsecommon-7.1.so)
==31715==    by 0x1DDF9DF9: ??? (in /usr/lib64/pulseaudio/libpulsecommon-7.1.so)
==31715==    by 0x1D96202A: ??? (in /usr/lib64/libpulse-mainloop-glib.so.0.0.5)
==31715==    by 0x7AA7CF9: g_main_dispatch (gmain.c:3154)
==31715==    by 0x7AA7CF9: g_main_context_dispatch (gmain.c:3769)
==31715==  Block was alloc'd at
==31715==    at 0x4C2F9C7: calloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==31715==    by 0x7AAD1F0: g_malloc0 (gmem.c:124)
==31715==    by 0x2452A39D: gvc_mixer_control_set_port_status_for_headset (gvc-mixer-control.c:2173)
==31715==    by 0x2451BE81: audio_selection_done (gsd-media-keys-manager.c:2489)
==31715==    by 0x7550ED3: emit_signal_instance_in_idle_cb (gdbusconnection.c:3701)
==31715==    by 0x7AA7CF9: g_main_dispatch (gmain.c:3154)
==31715==    by 0x7AA7CF9: g_main_context_dispatch (gmain.c:3769)
==31715==    by 0x7AA8057: g_main_context_iterate.isra.29 (gmain.c:3840)
==31715==    by 0x7AA8371: g_main_loop_run (gmain.c:4034)
==31715==    by 0x5CEA204: gtk_main (gtkmain.c:1246)
==31715==    by 0x403804: main (main.c:434)
2016-02-22 14:06:03 +01:00
.gitignore build: Ignore object files (*.o) 2013-03-11 13:46:27 +01:00
gvc-channel-map-private.h Initial import 2012-10-19 20:00:25 +02:00
gvc-channel-map.c remove unneeded *_class_init and *_init declarations 2015-09-09 14:13:00 +03:00
gvc-channel-map.h Initial import 2012-10-19 20:00:25 +02:00
gvc-mixer-card-private.h Initial import 2012-10-19 20:00:25 +02:00
gvc-mixer-card.c remove unneeded *_class_init and *_init declarations 2015-09-09 14:13:00 +03:00
gvc-mixer-card.h Add a GIcon accessor for GvcMixerUIDevices 2013-02-18 14:39:54 +01:00
gvc-mixer-control-private.h Initial import 2012-10-19 20:00:25 +02:00
gvc-mixer-control.c gvc-mixer-control: Fix double-free when setting headset 2016-02-22 14:06:03 +01:00
gvc-mixer-control.h gvc: Add "what did you plug in" support API 2016-01-17 18:34:07 -02:00
gvc-mixer-event-role.c remove unneeded *_class_init and *_init declarations 2015-09-09 14:13:00 +03:00
gvc-mixer-event-role.h Initial import 2012-10-19 20:00:25 +02:00
gvc-mixer-sink-input.c remove unneeded *_class_init and *_init declarations 2015-09-09 14:13:00 +03:00
gvc-mixer-sink-input.h Fix introspection support 2012-10-19 20:00:47 +02:00
gvc-mixer-sink.c remove unneeded *_class_init and *_init declarations 2015-09-09 14:13:00 +03:00
gvc-mixer-sink.h Fix introspection support 2012-10-19 20:00:47 +02:00
gvc-mixer-source-output.c gvc-mixer-source-output: Update volume and mute status 2016-01-12 01:31:56 +01:00
gvc-mixer-source-output.h Fix introspection support 2012-10-19 20:00:47 +02:00
gvc-mixer-source.c remove unneeded *_class_init and *_init declarations 2015-09-09 14:13:00 +03:00
gvc-mixer-source.h Fix introspection support 2012-10-19 20:00:47 +02:00
gvc-mixer-stream-private.h Initial import 2012-10-19 20:00:25 +02:00
gvc-mixer-stream.c gvc-mixer-stream: make card-index unsigned int 2015-09-15 15:35:26 +03:00
gvc-mixer-stream.h gvc-mixer-stream: make card-index unsigned int 2015-09-15 15:35:26 +03:00
gvc-mixer-ui-device.c gvc-mixer-ui-device: make stream-id unsigned int 2015-09-09 14:14:15 +03:00
gvc-mixer-ui-device.h gvc-mixer-ui-device: make stream-id unsigned int 2015-09-09 14:14:15 +03:00
gvc-pulseaudio-fake.h Initial import 2012-10-19 20:00:25 +02:00
libgnome-volume-control.doap <name> should match repository's name. 2013-08-21 00:40:05 +02:00
Makefile.am build: Include .typelib in CLEANFILES 2012-12-18 16:26:28 +01:00