Hallo,

my last fix to X11DRV_DIB_SetImageBits_RLE8 fixed a crash in the msie3 
installer, but was not right with handling additional pixels in a RLE8 
source. The right fix is to ignore additional pixels outside the
destination width.

Changelog: wine/graphics/x11drv/dib.c: X11DRV_DIB_SetImageBits_RLE8
           Ignore additional pixel ouside the destination width

Bye

Uwe Bonnes                [EMAIL PROTECTED]

Institut fuer Kernphysik  Schlossgartenstrasse 9  64289 Darmstadt
--------- Tel. 06151 162516 -------- Fax. 06151 164321 ----------

        
Index: wine/graphics/x11drv/dib.c
===================================================================
RCS file: /home/wine/wine/graphics/x11drv/dib.c,v
retrieving revision 1.55
diff -u -r1.55 dib.c
--- wine/graphics/x11drv/dib.c  2000/08/25 21:56:19     1.55
+++ wine/graphics/x11drv/dib.c  2000/09/07 11:35:32
@@ -823,6 +832,15 @@
                if (length) {
                    length--;
                    if(x >= width) {
+                       /* FIXME: With RLE8 we must simply ignore
+                                  additional pixels. Switching to
+                                 a new line was wrong. Probably
+                                 the same needs to be done for RLE4
+                                 too. Can't check for lack of test
+                                 cases.
+                                 [EMAIL PROTECTED]
+                                 000906
+                       */
                        x = 0;
                        if(--lines < 0)
                            return;
@@ -1255,12 +1273,8 @@
 
                while(length--)
                  {
-                   if (x>=dstwidth)
-                     {
-                       x=0;
-                       line--;
-                     }
-                   XPutPixel(bmpImage, x++, line, color);
+                   if (x<dstwidth)
+                     XPutPixel(bmpImage, x++, line, color);
                  }
            }
          else 
@@ -1324,13 +1338,9 @@
                          while(length--)
                            {
                                color_index = (*pIn++);
-                               if (x>=dstwidth)
-                                 {
-                                   x=0;
-                                   line--;
-                                 }
-                               XPutPixel(bmpImage, x++, line, 
-                                         colors[color_index]);
+                               if (x<dstwidth)
+                                 XPutPixel(bmpImage, x++, line, 
+                                           colors[color_index]);
                            }
                          
                          /*

Reply via email to