From 5bc7629eda277b6c27360287e5adb908646cd3fc Mon Sep 17 00:00:00 2001 From: Northn <57762732+Northn@users.noreply.github.com> Date: Tue, 5 Jul 2022 11:50:42 +0400 Subject: [PATCH] Lock clipboard before emptying it According to remark about EmptyDialog(), an application must open the clipboard before emptying it by using the OpenClipboard function. If the application specifies a NULL window handle when opening the clipboard, EmptyClipboard succeeds but sets the clipboard owner to NULL. This can cause SetClipboardData to fail. https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-emptyclipboard --- src/win/ClipboardWin.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/win/ClipboardWin.cpp b/src/win/ClipboardWin.cpp index cc6bcda..412861b 100644 --- a/src/win/ClipboardWin.cpp +++ b/src/win/ClipboardWin.cpp @@ -4,7 +4,10 @@ namespace ultralight { void ClipboardWin::Clear() { + if (!OpenClipboard(0)) + return; EmptyClipboard(); + CloseClipboard(); } String ClipboardWin::ReadPlainText() { @@ -55,4 +58,4 @@ void ClipboardWin::WritePlainText(const String& text) { CloseClipboard(); } -} // namespace ultralight \ No newline at end of file +} // namespace ultralight