[Spice-devel] [PATCH spice-gtk] smartcard: connect object signal handlers with spice helper

Pavel Grunt pgrunt at redhat.com
Wed Mar 25 03:28:13 PDT 2015


Hi, ACK!
> 
> The smartcard manager may outlive the smartcard channels. Make sure
> the
> channel handlers are disconnected when the channel is free by using
> spice_g_signal_connect_object() helper. This fixes crashes when
> dispatching smartcard events on deleted channels.
> 
> Related bug:
> https://bugzilla.redhat.com/show_bug.cgi?id=1205171
> ---
>  gtk/channel-smartcard.c | 16 ++++++++--------
>  1 file changed, 8 insertions(+), 8 deletions(-)
> 
> diff --git a/gtk/channel-smartcard.c b/gtk/channel-smartcard.c
> index 8588ae0..cc3ae3b 100644
> --- a/gtk/channel-smartcard.c
> +++ b/gtk/channel-smartcard.c
> @@ -140,14 +140,14 @@ static void
> spice_smartcard_channel_constructed(GObject *object)
>          SpiceSmartcardChannel *channel =
>          SPICE_SMARTCARD_CHANNEL(object);
>          SpiceSmartcardManager *manager =
>          spice_smartcard_manager_get();
>  
> -        g_signal_connect(G_OBJECT(manager), "reader-added",
> -                         (GCallback)reader_added_cb, channel);
> -        g_signal_connect(G_OBJECT(manager), "reader-removed",
> -                         (GCallback)reader_removed_cb, channel);
> -        g_signal_connect(G_OBJECT(manager), "card-inserted",
> -                         (GCallback)card_inserted_cb, channel);
> -        g_signal_connect(G_OBJECT(manager), "card-removed",
> -                         (GCallback)card_removed_cb, channel);
> +        spice_g_signal_connect_object(G_OBJECT(manager),
> "reader-added",
> +                                      (GCallback)reader_added_cb,
> channel, 0);
> +        spice_g_signal_connect_object(G_OBJECT(manager),
> "reader-removed",
> +                                      (GCallback)reader_removed_cb,
> channel, 0);
> +        spice_g_signal_connect_object(G_OBJECT(manager),
> "card-inserted",
> +                                      (GCallback)card_inserted_cb,
> channel, 0);
> +        spice_g_signal_connect_object(G_OBJECT(manager),
> "card-removed",
> +                                      (GCallback)card_removed_cb,
> channel, 0);
>      }
>  #endif
>  
> --
> 2.1.0
> 
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/spice-devel
> 


More information about the Spice-devel mailing list