From 34fce8a997272b95337e774f0ddb2caba0234390 Mon Sep 17 00:00:00 2001 From: Doug Lyons Date: Sat, 27 Sep 2025 02:01:57 -0500 Subject: [PATCH] [NTGDI][GDI32] SAI Paint Tool regression fix (#8383) CORE-20336 Move some code in win32ss/gdi/ntgdi/dibobj.c into win32ss/gdi/gdi32/objects/bitmap.c. Condition "YSrc = 0;" on "if (Height + YDest + 1 < ScanLines)" which fixes some gdi32:bitmap regressions. --- win32ss/gdi/gdi32/objects/bitmap.c | 11 +++++++++++ win32ss/gdi/ntgdi/dibobj.c | 11 +---------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/win32ss/gdi/gdi32/objects/bitmap.c b/win32ss/gdi/gdi32/objects/bitmap.c index 108d69dca80..332aacb31ec 100644 --- a/win32ss/gdi/gdi32/objects/bitmap.c +++ b/win32ss/gdi/gdi32/objects/bitmap.c @@ -982,6 +982,17 @@ SetDIBitsToDevice( } } + if (YDest >= 0) + { + ScanLines = min(abs(Height), ScanLines); + if (YSrc > 0) + { + ScanLines += YSrc; + if (Height + YDest + 1 < ScanLines) + YSrc = 0; + } + } + /* if ( !pDc_Attr || // DC is Public ColorUse == DIB_PAL_COLORS || diff --git a/win32ss/gdi/ntgdi/dibobj.c b/win32ss/gdi/ntgdi/dibobj.c index fd489f4157b..2e8acd302a4 100644 --- a/win32ss/gdi/ntgdi/dibobj.c +++ b/win32ss/gdi/ntgdi/dibobj.c @@ -528,16 +528,7 @@ NtGdiSetDIBitsToDeviceInternal( bmi->bmiHeader.biBitCount, XSrc, YSrc, XDest, YDest); - if (YDest >= 0) - { - ScanLines = min(abs(Height), ScanLines); - if (YSrc > 0) - { - ScanLines += YSrc; - YSrc = 0; - } - } - else + if (YDest < 0) { ScanLines = min(ScanLines, abs(bmi->bmiHeader.biHeight) - StartScan); }