Branch: master

d5059601 2014-05-19 12:06:53 Slávek Banko
Fix overwriting memory for an application icon
This resolves Bug 2033
M src/kernel/qimage.cpp
M src/kernel/qpixmap_x11.cpp
M src/kernel/qwidget_x11.cpp
diff --git a/src/kernel/qimage.cpp b/src/kernel/qimage.cpp
index 059b5ba..a22b744 100644
--- a/src/kernel/qimage.cpp
+++ b/src/kernel/qimage.cpp
@@ -1531,12 +1531,12 @@
 	int* line2[3];
 	int* pv[3];
 	if ( ( conversion_flags & TQt::Dither_Mask ) == TQt::DiffuseDither ) {
-	    line1[0] = new int[src->width()];
-	    line2[0] = new int[src->width()];
-	    line1[1] = new int[src->width()];
-	    line2[1] = new int[src->width()];
-	    line1[2] = new int[src->width()];
-	    line2[2] = new int[src->width()];
+	    line1[0] = new int[sw];
+	    line2[0] = new int[sw];
+	    line1[1] = new int[sw];
+	    line2[1] = new int[sw];
+	    line1[2] = new int[sw];
+	    line2[2] = new int[sw];
 	    pv[0] = new int[sw];
 	    pv[1] = new int[sw];
 	    pv[2] = new int[sw];
diff --git a/src/kernel/qpixmap_x11.cpp b/src/kernel/qpixmap_x11.cpp
index cc9c211..00564b3 100644
--- a/src/kernel/qpixmap_x11.cpp
+++ b/src/kernel/qpixmap_x11.cpp
@@ -764,6 +764,7 @@
         else
 #endif
         qSafeXDestroyImage( xi );
+	((TQPixmap*)this)->data->ximage = 0;
 	return image;
     }
 
@@ -947,7 +948,8 @@
             qt_XShmDestroyImage( xi, &shminfo );
         else
 #endif
-            qSafeXDestroyImage( xi );
+	qSafeXDestroyImage( xi );
+	((TQPixmap*)this)->data->ximage = 0;
 	return image;
     }
 
diff --git a/src/kernel/qwidget_x11.cpp b/src/kernel/qwidget_x11.cpp
index 8e9cc3a..8e0fee2 100644
--- a/src/kernel/qwidget_x11.cpp
+++ b/src/kernel/qwidget_x11.cpp
@@ -1336,7 +1336,6 @@
 		    int r = int( tqRed( l ) );
 		    int g = int( tqGreen( l ) );
 		    int b = int( tqBlue( l ) );
-		    ls[x] = tqRgb( r, g, b );
 		    XSetForeground(x11Display(), gc, (r << 16) | (g << 8) | b );
 		    XDrawPoint(x11Display(), pmHandle, gc, x, y);
 		}