diff --git a/reactos/subsystems/win32/win32k/objects/bitmaps.c b/reactos/subsystems/win32/win32k/objects/bitmaps.c index 72fea7e6241..6fc4feedb90 100644 --- a/reactos/subsystems/win32/win32k/objects/bitmaps.c +++ b/reactos/subsystems/win32/win32k/objects/bitmaps.c @@ -664,13 +664,21 @@ BITMAPOBJ_CopyBitmap(HBITMAP hBitmap) if (buf == NULL) { GDIOBJ_UnlockObjByPtr(GdiHandleTable, resBitmap); + GDIOBJ_UnlockObjByPtr(GdiHandleTable, Bitmap); + NtGdiDeleteObject(res); return 0; } IntGetBitmapBits (Bitmap, bm.bmWidthBytes * abs(bm.bmHeight), buf); IntSetBitmapBits (resBitmap, bm.bmWidthBytes * abs(bm.bmHeight), buf); ExFreePool (buf); + resBitmap->flFlags = Bitmap->flFlags; GDIOBJ_UnlockObjByPtr(GdiHandleTable, resBitmap); } + else + { + NtGdiDeleteObject(res); + res = NULL; + } } GDIOBJ_UnlockObjByPtr(GdiHandleTable, Bitmap);