fixing wrong usage of QList::erase(QList::iterator) (also for QHash)
authorMarcus Eggenberger <egs@quassel-irc.org>
Tue, 6 Jan 2009 19:11:13 +0000 (20:11 +0100)
committerMarcus Eggenberger <egs@quassel-irc.org>
Tue, 6 Jan 2009 19:11:13 +0000 (20:11 +0100)
src/client/modelpropertymapper.cpp
src/core/core.cpp
src/qtui/qtui.cpp
src/qtui/settingspages/bufferviewsettingspage.cpp

index a855568..f4965d1 100644 (file)
@@ -81,10 +81,12 @@ void ModelPropertyMapper::removeMapping(int column, int role, QObject *target, c
   }
   
   if(column == 0 && role == 0 && !property.isNull()) {
   }
   
   if(column == 0 && role == 0 && !property.isNull()) {
-    QList<Mapping>::iterator iter;
-    for(iter = _mappings.begin(); iter != _mappings.end(); iter++) {
+    QList<Mapping>::iterator iter = _mappings.begin();
+    while(iter != _mappings.end()) {
       if((*iter).target == target)
       if((*iter).target == target)
-       _mappings.erase(iter);
+       iter = _mappings.erase(iter);
+      else
+       iter++;
     }
     return;
   }
     }
     return;
   }
index 233157b..9b7f5b6 100644 (file)
@@ -458,17 +458,19 @@ void Core::clientDisconnected() {
     QHash<QTcpSocket *, quint32>::iterator blockSizeIter = blocksizes.begin();
     while(blockSizeIter != blocksizes.end()) {
       if(blockSizeIter.key() == socket) {
     QHash<QTcpSocket *, quint32>::iterator blockSizeIter = blocksizes.begin();
     while(blockSizeIter != blocksizes.end()) {
       if(blockSizeIter.key() == socket) {
-       blocksizes.erase(blockSizeIter);
+       blockSizeIter = blocksizes.erase(blockSizeIter);
+      } else {
+       blockSizeIter++;
       }
       }
-      blockSizeIter++;
     }
 
     QHash<QTcpSocket *, QVariantMap>::iterator clientInfoIter = clientInfo.begin();
     while(clientInfoIter != clientInfo.end()) {
       if(clientInfoIter.key() == socket) {
     }
 
     QHash<QTcpSocket *, QVariantMap>::iterator clientInfoIter = clientInfo.begin();
     while(clientInfoIter != clientInfo.end()) {
       if(clientInfoIter.key() == socket) {
-       clientInfo.erase(clientInfoIter);
+       clientInfoIter = clientInfo.erase(clientInfoIter);
+      } else {
+       clientInfoIter++;
       }
       }
-      clientInfoIter++;
     }
   }
 
     }
   }
 
index 231bbf4..27cf971 100644 (file)
@@ -127,10 +127,11 @@ void QtUi::closeNotification(uint notificationId) {
     if((*i).notificationId == notificationId) {
       foreach(AbstractNotificationBackend *backend, _notificationBackends)
         backend->close(notificationId);
     if((*i).notificationId == notificationId) {
       foreach(AbstractNotificationBackend *backend, _notificationBackends)
         backend->close(notificationId);
-      _notifications.erase(i);
+      i = _notifications.erase(i);
       break;
       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);
     if(!bufferId.isValid() || (*i).bufferId == bufferId) {
       foreach(AbstractNotificationBackend *backend, _notificationBackends)
         backend->close((*i).notificationId);
-      _notifications.erase(i);
+      i = _notifications.erase(i);
+    } else {
+      ++i;
     }
     }
-    ++i;
   }
 }
 
   }
 }
 
index f0a8230..76e461e 100644 (file)
@@ -350,10 +350,11 @@ void BufferViewSettingsPage::on_deleteBufferView_clicked() {
       QList<BufferViewConfig *>::iterator iter = _newBufferViews.begin();
       while(iter != _newBufferViews.end()) {
        if(*iter == config) {
       QList<BufferViewConfig *>::iterator iter = _newBufferViews.begin();
       while(iter != _newBufferViews.end()) {
        if(*iter == config) {
-         _newBufferViews.erase(iter);
+         iter = _newBufferViews.erase(iter);
          break;
          break;
+       } else {
+         iter++;
        }
        }
-       iter++;
       }
       delete config;
       if(_deleteBufferViews.isEmpty() && _changedBufferViews.isEmpty() && _newBufferViews.isEmpty())
       }
       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();
   while(iter != iterEnd) {
     if(&(iter.key()) == &(iter.value())) {
       iter.value()->deleteLater();
-      _changedBufferViews.erase(iter);
+      iter = _changedBufferViews.erase(iter);
     } else {
       changed = true;
       iter++;
     } else {
       changed = true;
       iter++;