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);
|
HGLOBAL copy = GlobalAlloc(GMEM_MOVEABLE, sz);
|
||||||
if (!copy) return E_OUTOFMEMORY;
|
if (!copy) return E_OUTOFMEMORY;
|
||||||
void* src = GlobalLock(hdrop_);
|
void* src = GlobalLock(hdrop_);
|
||||||
|
if (!src) { GlobalFree(copy); return E_OUTOFMEMORY; }
|
||||||
void* dst = GlobalLock(copy);
|
void* dst = GlobalLock(copy);
|
||||||
if (src && dst) std::memcpy(dst, src, sz);
|
if (!dst) { GlobalUnlock(hdrop_); GlobalFree(copy); return E_OUTOFMEMORY; }
|
||||||
if (src) GlobalUnlock(hdrop_);
|
std::memcpy(dst, src, sz);
|
||||||
if (dst) GlobalUnlock(copy);
|
GlobalUnlock(hdrop_);
|
||||||
|
GlobalUnlock(copy);
|
||||||
|
|
||||||
med->tymed = TYMED_HGLOBAL;
|
med->tymed = TYMED_HGLOBAL;
|
||||||
med->hGlobal = copy;
|
med->hGlobal = copy;
|
||||||
|
|||||||
Reference in New Issue
Block a user