Re-apply fix to dib16bpp and fix the root cause
Modified: trunk/reactos/subsys/win32k/dib/dib16bpp.c
Modified: trunk/reactos/subsys/win32k/eng/lineto.c

Modified: trunk/reactos/subsys/win32k/dib/dib16bpp.c
--- trunk/reactos/subsys/win32k/dib/dib16bpp.c	2005-06-09 20:18:32 UTC (rev 15849)
+++ trunk/reactos/subsys/win32k/dib/dib16bpp.c	2005-06-09 20:40:44 UTC (rev 15850)
@@ -53,7 +53,7 @@
 "  shl  $16, %%eax\n"
 "  andl $0xffff, %0\n"  /* If the pixel value is "abcd", put "abcdabcd" in %eax */
 "  or   %0, %%eax\n"
-"  test $0x01, %%edi\n" /* Align to fullword boundary */
+"  test $0x03, %%edi\n" /* Align to fullword boundary */
 "  jz   .L1\n"
 "  stosw\n"
 "  dec  %1\n"

Modified: trunk/reactos/subsys/win32k/eng/lineto.c
--- trunk/reactos/subsys/win32k/eng/lineto.c	2005-06-09 20:18:32 UTC (rev 15849)
+++ trunk/reactos/subsys/win32k/eng/lineto.c	2005-06-09 20:40:44 UTC (rev 15850)
@@ -381,6 +381,11 @@
   deltax = x2 - x1;
   deltay = y2 - y1;
 
+  if (0 == deltax && 0 == deltay)
+    {
+      return TRUE;
+    }
+
   if (deltax < 0)
     {
       xchange = -1;