From: Marcus Eggenberger Date: Tue, 6 Jan 2009 19:11:13 +0000 (+0100) Subject: fixing wrong usage of QList::erase(QList::iterator) (also for QHash) X-Git-Tag: 0.4.0~259 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=3af9d3aeccfac1218ad3342434e5fda0c4ad1266;hp=e531fd1f1ea36a360a9d876c94e73b0f3b1bcd22 fixing wrong usage of QList::erase(QList::iterator) (also for QHash) --- diff --git a/src/client/modelpropertymapper.cpp b/src/client/modelpropertymapper.cpp index a855568f..f4965d14 100644 --- a/src/client/modelpropertymapper.cpp +++ b/src/client/modelpropertymapper.cpp @@ -81,10 +81,12 @@ void ModelPropertyMapper::removeMapping(int column, int role, QObject *target, c } if(column == 0 && role == 0 && !property.isNull()) { - QList::iterator iter; - for(iter = _mappings.begin(); iter != _mappings.end(); iter++) { + QList::iterator iter = _mappings.begin(); + while(iter != _mappings.end()) { if((*iter).target == target) - _mappings.erase(iter); + iter = _mappings.erase(iter); + else + iter++; } return; } diff --git a/src/core/core.cpp b/src/core/core.cpp index 233157bc..9b7f5b65 100644 --- a/src/core/core.cpp +++ b/src/core/core.cpp @@ -458,17 +458,19 @@ void Core::clientDisconnected() { QHash::iterator blockSizeIter = blocksizes.begin(); while(blockSizeIter != blocksizes.end()) { if(blockSizeIter.key() == socket) { - blocksizes.erase(blockSizeIter); + blockSizeIter = blocksizes.erase(blockSizeIter); + } else { + blockSizeIter++; } - blockSizeIter++; } QHash::iterator clientInfoIter = clientInfo.begin(); while(clientInfoIter != clientInfo.end()) { if(clientInfoIter.key() == socket) { - clientInfo.erase(clientInfoIter); + clientInfoIter = clientInfo.erase(clientInfoIter); + } else { + clientInfoIter++; } - clientInfoIter++; } } diff --git a/src/qtui/qtui.cpp b/src/qtui/qtui.cpp index 231bbf4b..27cf9715 100644 --- a/src/qtui/qtui.cpp +++ b/src/qtui/qtui.cpp @@ -127,10 +127,11 @@ void QtUi::closeNotification(uint notificationId) { if((*i).notificationId == notificationId) { foreach(AbstractNotificationBackend *backend, _notificationBackends) backend->close(notificationId); - _notifications.erase(i); + i = _notifications.erase(i); break; + } else { + ++i; } - ++i; } } @@ -140,9 +141,10 @@ void QtUi::closeNotifications(BufferId bufferId) { if(!bufferId.isValid() || (*i).bufferId == bufferId) { foreach(AbstractNotificationBackend *backend, _notificationBackends) backend->close((*i).notificationId); - _notifications.erase(i); + i = _notifications.erase(i); + } else { + ++i; } - ++i; } } diff --git a/src/qtui/settingspages/bufferviewsettingspage.cpp b/src/qtui/settingspages/bufferviewsettingspage.cpp index f0a8230f..76e461e9 100644 --- a/src/qtui/settingspages/bufferviewsettingspage.cpp +++ b/src/qtui/settingspages/bufferviewsettingspage.cpp @@ -350,10 +350,11 @@ void BufferViewSettingsPage::on_deleteBufferView_clicked() { QList::iterator iter = _newBufferViews.begin(); while(iter != _newBufferViews.end()) { if(*iter == config) { - _newBufferViews.erase(iter); + iter = _newBufferViews.erase(iter); break; + } else { + iter++; } - iter++; } delete config; if(_deleteBufferViews.isEmpty() && _changedBufferViews.isEmpty() && _newBufferViews.isEmpty()) @@ -463,7 +464,7 @@ bool BufferViewSettingsPage::testHasChanged() { while(iter != iterEnd) { if(&(iter.key()) == &(iter.value())) { iter.value()->deleteLater(); - _changedBufferViews.erase(iter); + iter = _changedBufferViews.erase(iter); } else { changed = true; iter++;