[Spice-devel] [PATCH] smartcard: do not keep weak ref when device is NULL

Frediano Ziglio fziglio at redhat.com
Tue Jan 29 13:35:19 UTC 2019


> 
> When a client disconnects, smartcard_channel_client_set_char_device
> is called with a NULL "device" argument. In that case there is
> no need to take a weak reference to the device.
> 
> Without this patch the server complains:
>   g_object_add_weak_pointer: assertion 'G_IS_OBJECT (object)' failed
> 
> and aborts when a second client attempts to connect.
> 
> Signed-off-by: Uri Lublin <uril at redhat.com>

Yes, not much sense to call g_object_add_weak_pointer on NULL.

Acked-by: Frediano Ziglio <fziglio at redhat.com>

> ---
>  server/smartcard-channel-client.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/server/smartcard-channel-client.c
> b/server/smartcard-channel-client.c
> index 3b3fc27cc..49e765b7c 100644
> --- a/server/smartcard-channel-client.c
> +++ b/server/smartcard-channel-client.c
> @@ -389,8 +389,10 @@ void
> smartcard_channel_client_set_char_device(SmartCardChannelClient *scc,
>      }
>  
>      scc->priv->smartcard = device;
> -    g_object_add_weak_pointer(G_OBJECT(scc->priv->smartcard),
> -                              (gpointer*)&scc->priv->smartcard);
> +    if (scc->priv->smartcard) {
> +        g_object_add_weak_pointer(G_OBJECT(scc->priv->smartcard),
> +                                  (gpointer*)&scc->priv->smartcard);
> +    }
>  }
>  
>  RedCharDeviceSmartcard*
>  smartcard_channel_client_get_char_device(SmartCardChannelClient *scc)



More information about the Spice-devel mailing list