This prevents a possible crash on windows 32 bit. The linkage of UnhookWindowsHookEx is WINAPI which is __stdcall while callback for g_clear_pointer is C. This could cause stack pointer corruption depending on compiler flags. Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx> --- src/spice-widget.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/spice-widget.c b/src/spice-widget.c index b5936bc..c528614 100644 --- a/src/spice-widget.c +++ b/src/spice-widget.c @@ -827,7 +827,11 @@ static void try_keyboard_ungrab(SpiceDisplay *display) SPICE_DEBUG("ungrab keyboard"); gdk_keyboard_ungrab(GDK_CURRENT_TIME); #ifdef G_OS_WIN32 - g_clear_pointer(&d->keyboard_hook, UnhookWindowsHookEx); + // do not use g_clear_pointer as Windows API have different linkage + if (d->keyboard_hook) { + UnhookWindowsHookEx(d->keyboard_hook); + d->keyboard_hook = NULL; + } #endif d->keyboard_grab_active = false; g_signal_emit(widget, signals[SPICE_DISPLAY_KEYBOARD_GRAB], 0, false); -- 2.7.4 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel