BITMAPOBJ_CopyBitmap:

- release lock on failure
- delete created bitmap on failure
- copy flags, fixes a memory leak

svn path=/trunk/; revision=32335
This commit is contained in:
Timo Kreuzer 2008-02-12 23:14:07 +00:00
parent ed323f3711
commit 8e61015f65

View file

@ -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);