From 4c998aed8335a2aa60e3bd426597f9cdb756c1f1 Mon Sep 17 00:00:00 2001 From: Jean-Paul Chaput Date: Sun, 21 Sep 2008 10:48:08 +0000 Subject: [PATCH] Access to free'd memory correction inside CellWidget::unselectAll(). Do not iterate over a STL set while erasing (all) elements... The set is stable over erasure, but if the iterator is pointing to the erased element we cannot do a "++". Increment first, erase after. --- hurricane/src/hviewer/CellWidget.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/hurricane/src/hviewer/CellWidget.cpp b/hurricane/src/hviewer/CellWidget.cpp index 03ba13d8..ccd76357 100644 --- a/hurricane/src/hviewer/CellWidget.cpp +++ b/hurricane/src/hviewer/CellWidget.cpp @@ -1188,10 +1188,9 @@ namespace Hurricane { void CellWidget::unselectAll ( bool delayRedraw ) { - set::iterator iselector = _selectors.begin (); - for ( ; iselector != _selectors.end() ; iselector++ ) { - (*iselector)->detachFrom ( this ); - } + set::iterator iselector; + while ( !_selectors.empty() ) + (*_selectors.begin())->detachFrom ( this ); _selectionHasChanged = true; if ( !delayRedraw ) redraw ();