[Digikam-devel] [Bug 109946] Crash when saving a picture after normalization

Gilles Caulier caulier.gilles at free.fr
Tue Aug 9 19:27:01 BST 2005


------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
         
http://bugs.kde.org/show_bug.cgi?id=109946         




------- Additional Comments From caulier.gilles free fr  2005-08-09 20:27 -------
SVN commit 444324 by cgilles:

Patch from Owen Hirst to fix crash when histogram is visible.

The histogram thread holds a pointer to the image data. Under certain
conditions, for eg, saving of image and reloading of image data, this image
data pointer is invalidated. Since the thread still holds a pointer to the
invalid pointer and tries to do calculations on it, the application crashes.
Attached patch deletes the histogram thread before reloading the image

CCMAIL: digikam-devel kde org
CCBUGS: 109946



 M  +14 -7     canvas.cpp  


--- trunk/extragear/graphics/digikam/utilities/imageeditor/canvas.cpp #444323:444324
 @ -346,6 +346,12  @
         emit signalSelected(false);
     }
 
+    if (d->imageHistogram)
+    {
+        delete d->imageHistogram;
+        d->imageHistogram = 0;
+    }    
+    
     viewport()->setUpdatesEnabled(false);
 
     d->tileCache.clear();
 @ -362,7 +368,7  @
     viewport()->setUpdatesEnabled(true);
     viewport()->update();
     if (d->showHistogram)
-	    updateHistogram(true);
+       updateHistogram(true);
    
     emit signalChanged(false, false);
     emit signalZoomChanged(d->zoom);
 @ -453,11 +459,12  @
  */
 bool Canvas::updateHistogram(bool invalidate)
 {
-    if (invalidate && d->imageHistogram) {
-	    delete d->imageHistogram;
-	    d->imageHistogram = 0;
+    if (invalidate && d->imageHistogram) 
+    {
+        delete d->imageHistogram;
+        d->imageHistogram = 0;
     }
-	
+
     if (d->imageHistogram == 0) {
         d->histogramReady = false;
         d->imageHistogram = new ImageHistogram(d->im->getData(),
 @ -710,9 +717,9  @
 void Canvas::paintHistogram(const QRect& cr)
 {
     if (!d->showHistogram) 
-	    return;
+       return;
     if (!d->histogramPixmap)
-	    return;
+       return;
 
     QRect rcexposed, rc, rctmp;



More information about the Digikam-devel mailing list