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;