From 4f51758ad6a5f97e33f6a976d11159f2b06e01df Mon Sep 17 00:00:00 2001 From: daniel-c-harvey Date: Sun, 26 Jul 2026 20:06:55 -0400 Subject: [PATCH] fix(drag_out): return E_OUTOFMEMORY on GlobalLock failure in HDropDataObject::GetData --- src/drag_out_win.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/drag_out_win.cpp b/src/drag_out_win.cpp index d6c9685..e555f24 100644 --- a/src/drag_out_win.cpp +++ b/src/drag_out_win.cpp @@ -138,10 +138,12 @@ public: HGLOBAL copy = GlobalAlloc(GMEM_MOVEABLE, sz); if (!copy) return E_OUTOFMEMORY; void* src = GlobalLock(hdrop_); + if (!src) { GlobalFree(copy); return E_OUTOFMEMORY; } void* dst = GlobalLock(copy); - if (src && dst) std::memcpy(dst, src, sz); - if (src) GlobalUnlock(hdrop_); - if (dst) GlobalUnlock(copy); + if (!dst) { GlobalUnlock(hdrop_); GlobalFree(copy); return E_OUTOFMEMORY; } + std::memcpy(dst, src, sz); + GlobalUnlock(hdrop_); + GlobalUnlock(copy); med->tymed = TYMED_HGLOBAL; med->hGlobal = copy;