diff --git a/clipboard_windows.go b/clipboard_windows.go index 253bb93..0ea5568 100644 --- a/clipboard_windows.go +++ b/clipboard_windows.go @@ -7,6 +7,7 @@ package clipboard import ( + "errors" "runtime" "syscall" "time" @@ -33,6 +34,8 @@ var ( globalLock = kernel32.NewProc("GlobalLock") globalUnlock = kernel32.NewProc("GlobalUnlock") lstrcpy = kernel32.NewProc("lstrcpyW") + + ErrFormatUnavailable = errors.New("clipboard format is unavailable") ) // waitOpenClipboard opens the clipboard, waiting for up to a second to do so. @@ -56,8 +59,8 @@ func readAll() (string, error) { // Otherwise if the goroutine switch thread during execution (which is a common practice), the OpenClipboard and CloseClipboard will happen on two different threads, and it will result in a clipboard deadlock. runtime.LockOSThread() defer runtime.UnlockOSThread() - if formatAvailable, _, err := isClipboardFormatAvailable.Call(cfUnicodetext); formatAvailable == 0 { - return "", err + if formatAvailable, _, _ := isClipboardFormatAvailable.Call(cfUnicodetext); formatAvailable == 0 { + return "", ErrFormatUnavailable } err := waitOpenClipboard() if err != nil {