Author: gedmurphy
Date: Wed Apr 18 02:58:34 2007
New Revision: 26383
URL:
http://svn.reactos.org/svn/reactos?rev=26383&view=rev
Log:
- fix GetObject call for bitmaps
- Windows returns the number of bytes copied, not the size of the struct.
- fix NtGdiGetObject, 'count' is now irrelevant
- this breaks CopyImage, but it's broken anyway so it can wait until tomorrow.
Modified:
trunk/reactos/subsystems/win32/win32k/objects/bitmaps.c
trunk/reactos/subsystems/win32/win32k/objects/dc.c
Modified: trunk/reactos/subsystems/win32/win32k/objects/bitmaps.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ob…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/objects/bitmaps.c (original)
+++ trunk/reactos/subsystems/win32/win32k/objects/bitmaps.c Wed Apr 18 02:58:34 2007
@@ -1564,24 +1564,18 @@
if( buffer == NULL ) return sizeof(BITMAP);
if (Count < sizeof(BITMAP)) return 0;
+ Count = sizeof(BITMAP);
+
if(bmp->dib)
{
-
- if(Count < (INT) sizeof(DIBSECTION))
- {
- if (Count > (INT) sizeof(BITMAP)) Count = sizeof(BITMAP);
- }
- else
- {
- if (Count > (INT) sizeof(DIBSECTION)) Count = sizeof(DIBSECTION);
- }
memcpy(buffer, bmp->dib, Count);
+ /* Windows returns bytes copied, not DIBSECTION size */
return Count;
}
else
{
BITMAP Bitmap;
- if (Count > (INT) sizeof(BITMAP)) Count = sizeof(BITMAP);
+
Bitmap.bmType = 0;
Bitmap.bmWidth = bmp->SurfObj.sizlBitmap.cx;
Bitmap.bmHeight = bmp->SurfObj.sizlBitmap.cy;
Modified: trunk/reactos/subsystems/win32/win32k/objects/dc.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ob…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/objects/dc.c (original)
+++ trunk/reactos/subsystems/win32/win32k/objects/dc.c Wed Apr 18 02:58:34 2007
@@ -1841,20 +1841,20 @@
return Ret;
}
- if ((RetCount) && (count))
- {
- SafeBuf = ExAllocatePoolWithTag(PagedPool, count, TAG_GDIOBJ);
+ if (RetCount)
+ {
+ SafeBuf = ExAllocatePoolWithTag(PagedPool, RetCount, TAG_GDIOBJ);
if(!SafeBuf)
{
SetLastWin32Error(ERROR_NOT_ENOUGH_MEMORY);
return Ret;
}
- Ret = IntGdiGetObject(handle, count, SafeBuf);
+ Ret = IntGdiGetObject(handle, RetCount, SafeBuf);
_SEH_TRY
{
/* pointer already probed! */
- RtlCopyMemory(buffer, SafeBuf, count);
+ RtlCopyMemory(buffer, SafeBuf, RetCount);
}
_SEH_HANDLE
{