[Spice-devel] [PATCH v2 spicec windows 1/1] client/windows: fix SetClipboardViewer error handling rhbz#786554

Alon Levy alevy at redhat.com
Thu Mar 1 04:08:00 PST 2012


On Thu, Mar 01, 2012 at 01:34:32PM +0200, Arnon Gilboa wrote:
> MSDN says the following about SetClipboardViewer(): "If an error occurs or there
> are no other windows in the clipboard viewer chain, the return value is NULL".
> Seems like the buggy case was "no other windows in the clipboard viewer chain",
> which explains the 3rd party clipboard manager workaround detailed in the bug
> description.
> 
> It also seems like SetClipboardViewer() does not clear the error state on
> succcess. Calling SetLastError(0) before SetClipboardViewer() seems to solves
> this issue.
> 
> Since we could not reproduce the bug on our env, the customer has verified on
> several of their systems that a private build resolved the issue.

ACK.

> ---
>  client/windows/platform.cpp |    7 ++++---
>  1 files changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/client/windows/platform.cpp b/client/windows/platform.cpp
> index 0f35a65..223be1d 100644
> --- a/client/windows/platform.cpp
> +++ b/client/windows/platform.cpp
> @@ -236,6 +236,7 @@ static void create_message_wind()
>  {
>      WNDCLASSEX wclass;
>      ATOM class_atom;
> +    DWORD err;
>  
>      const LPCWSTR class_name = L"spicec_platform_wclass";
>  
> @@ -259,9 +260,9 @@ static void create_message_wind()
>      if (!(platform_win = CreateWindow(class_name, L"", 0, 0, 0, 0, 0, NULL, NULL, instance, NULL))) {
>          THROW("create message window failed");
>      }
> -
> -    if (!(next_clipboard_viewer_win = SetClipboardViewer(platform_win)) && GetLastError()) {
> -        THROW("set clipboard viewer failed");
> +    SetLastError(0);
> +    if (!(next_clipboard_viewer_win = SetClipboardViewer(platform_win)) && (err = GetLastError())) {
> +        THROW("set clipboard viewer failed %u", err);
>      }
>      if (!(clipboard_event = CreateEvent(NULL, FALSE, FALSE, NULL))) {
>          THROW("create clipboard event failed");
> -- 
> 1.7.4.1
> 
> _______________________________________________
> 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