X-Git-Url: https://git.reactos.org/?p=reactos.git;a=blobdiff_plain;f=reactos%2Fsubsystems%2Fwin32%2Fwin32k%2Fobjects%2Fdibobj.c;h=1a26cd6f49f74e035caf2a04bcf1068c86f7a2c0;hp=963f152acbd2bcf85d8aa2dc710e4d905b183c10;hb=9fb8200d9b935c394ceaba30585474055d3c77b2;hpb=c6182beb15c73ff8c24367ebdb51c2eab53613e6 diff --git a/reactos/subsystems/win32/win32k/objects/dibobj.c b/reactos/subsystems/win32/win32k/objects/dibobj.c index 963f152acbd..1a26cd6f49f 100644 --- a/reactos/subsystems/win32/win32k/objects/dibobj.c +++ b/reactos/subsystems/win32/win32k/objects/dibobj.c @@ -939,9 +939,26 @@ NtGdiGetDIBitsInternal( rcDest.bottom = ScanLines; rcDest.right = psurf->SurfObj.sizlBitmap.cx; - srcPoint.x = 0; - srcPoint.y = height < 0 ? - psurf->SurfObj.sizlBitmap.cy - (StartScan + ScanLines) : StartScan; + srcPoint.x = 0; + + if(height < 0) + { + srcPoint.y = 0; + + if(ScanLines <= StartScan) + { + ScanLines = 1; + SURFACE_ShareUnlockSurface(psurfDest); + GreDeleteObject(hBmpDest); + goto done; + } + + ScanLines -= StartScan; + } + else + { + srcPoint.y = StartScan; + } EXLATEOBJ_vInitialize(&exlo, psurf->ppal, psurfDest->ppal, 0xffffff, 0xffffff, 0);