fix(drag_out): return E_OUTOFMEMORY on GlobalLock failure in HDropDataObject::GetData
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user