From e3932bfebbfec7637f3d03d90e8f9b75e3223236 Mon Sep 17 00:00:00 2001 From: Pavel Grunt Date: Wed, 11 Mar 2015 16:31:39 +0100 Subject: [spice-gtk] channel-usbredir: Do not stop event listening if SpiceSession does not exist Avoids Segfault when closing the connection just after the usb device redirection. --- gtk/channel-usbredir.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/gtk/channel-usbredir.c b/gtk/channel-usbredir.c index b1a91fb..d974434 100644 --- a/gtk/channel-usbredir.c +++ b/gtk/channel-usbredir.c @@ -419,9 +419,12 @@ void spice_usbredir_channel_disconnect_device(SpiceUsbredirChannel *channel) * usbredirhost_set_device NULL will interrupt the * libusb_handle_events call in the thread. */ - spice_usb_device_manager_stop_event_listening( - spice_usb_device_manager_get( - spice_channel_get_session(SPICE_CHANNEL(channel)), NULL)); + { + SpiceSession *session = spice_channel_get_session(SPICE_CHANNEL(channel)); + if (session != NULL) + spice_usb_device_manager_stop_event_listening( + spice_usb_device_manager_get(session, NULL)); + } /* This also closes the libusb handle we passed from open_device */ usbredirhost_set_device(priv->host, NULL); libusb_unref_device(priv->device);