DIB_32BPP_BitBlt: Fix ROP4_SRCCOPY case for 32bpp.

This file is ugly!
Modified: trunk/reactos/subsys/win32k/dib/dib32bpp.c

Modified: trunk/reactos/subsys/win32k/dib/dib32bpp.c
--- trunk/reactos/subsys/win32k/dib/dib32bpp.c	2005-06-03 01:18:02 UTC (rev 15744)
+++ trunk/reactos/subsys/win32k/dib/dib32bpp.c	2005-06-03 01:45:26 UTC (rev 15745)
@@ -393,9 +393,14 @@
 				case BMF_24BPP:
 				break;
 				case BMF_32BPP:
-
-					 SrcmaxX = BltInfo->SourceSurface->sizlBitmap.cx - BltInfo->SourcePoint.x;
-					 SrcmaxY = BltInfo->SourceSurface->sizlBitmap.cy - BltInfo->SourcePoint.y;
+				{
+					INT Destdelta;
+					INT Sourcedelta;
+					register PBYTE Destaddr;
+					register PBYTE Srcaddr;
+					
+                    SrcmaxX = BltInfo->SourceSurface->sizlBitmap.cx - BltInfo->SourcePoint.x;
+					SrcmaxY = BltInfo->SourceSurface->sizlBitmap.cy - BltInfo->SourcePoint.y;
  
 					/* calc the dst BMP size */
 					DesmaxX = BltInfo->DestRect.right - BltInfo->DestRect.left;
@@ -406,19 +411,24 @@
 					if (DesmaxY > SrcmaxY ) DesmaxY = SrcmaxY;
  
 					/* do blt */
-					INT Destdelta = BltInfo->DestSurface->lDelta;
-					INT Sourcedelta = BltInfo->SourceSurface->lDelta;
-					register PBYTE Destaddr = BltInfo->DestSurface->pvScan0 + BltInfo->DestRect.top * Destdelta + BltInfo->DestRect.left;
-					register PBYTE Srcaddr = BltInfo->SourceSurface->pvScan0 + BltInfo->SourcePoint.y * Sourcedelta + BltInfo->SourcePoint.x;
+					Destdelta = BltInfo->DestSurface->lDelta;
+					Sourcedelta = BltInfo->SourceSurface->lDelta;
+					Destaddr = BltInfo->DestSurface->pvScan0 + BltInfo->DestRect.top * Destdelta + BltInfo->DestRect.left;
+					Srcaddr = BltInfo->SourceSurface->pvScan0 + BltInfo->SourcePoint.y * Sourcedelta + BltInfo->SourcePoint.x;
  
 					DesmaxX *= 4;
-					while (--DesmaxY)
+					if (DesmaxY > 0)
 					{
-						RtlCopyMemory(Destaddr, Srcaddr, DesmaxX);
-						Destaddr += Destdelta;
-						Srcaddr += Sourcedelta;
+						do
+						{
+							RtlCopyMemory(Destaddr, Srcaddr, DesmaxX);
+							Destaddr += Destdelta;
+							Srcaddr += Sourcedelta;
+						}
+						while (--DesmaxY);
 					}
-					break;		 
+					break;
+				}
 
 				default:
 				break;