diff --git a/clipboard/clipboard_windows.go b/clipboard/clipboard_windows.go index 93285dd..7111e81 100644 --- a/clipboard/clipboard_windows.go +++ b/clipboard/clipboard_windows.go @@ -99,6 +99,7 @@ func writeAll(text string) error { if h == 0 { return err } + defer func() { if h != 0 { globalFree.Call(h) @@ -116,17 +117,17 @@ func writeAll(text string) error { } r, _, err = globalUnlock.Call(h) - if r == 0 { - return err - } - - r, _, err = setClipboardData.Call(cfUnicodetext, h) if r == 0 { if err.(syscall.Errno) != 0 { return err } } + r, _, err = setClipboardData.Call(cfUnicodetext, h) + if r == 0 { + return err + } + h = 0 // suppress deferred cleanup return nil }