-rw-r--r-- | microkde/kconfig.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/microkde/kconfig.cpp b/microkde/kconfig.cpp index f8e362e..71db891 100644 --- a/microkde/kconfig.cpp +++ b/microkde/kconfig.cpp @@ -326,94 +326,97 @@ void KConfig::sync() * If the group is not empty and bDeep is false, nothing gets * deleted and false is returned. * If this group is the current group and it is deleted, the * current group is undefined and should be set with setGroup() * before the next operation on the configuration object. * * @param group The name of the group * returns true if we deleted at least one entry. */ bool KConfig::deleteGroup( const QString& group) { bool dirty = false; int pos; QMap<QString,bool>::Iterator itBool = mBoolMap.begin(); QMap<QString,bool>::Iterator delBool; while ( itBool != mBoolMap.end() ) { pos = itBool.key().find( group ); if (pos == 0) { delBool = itBool; ++itBool; mBoolMap.remove(delBool); dirty = true; - } + } else + ++itBool; } /* for( itBool = mBoolMap.begin(); itBool != mBoolMap.end(); ++itBool ) { pos = itBool.key().find( group ); if (pos == 0) { mBoolMap.remove(itBool); dirty = true; } } */ QMap<QString,QString>::Iterator itString = mStringMap.begin(); QMap<QString,QString>::Iterator delString ; while( itString != mStringMap.end() ) { pos = itString.key().find( group ); if (pos == 0) { delString = itString; ++itString; mStringMap.remove(delString); //qDebug("delte++++++++++++++++++ "); dirty = true; - } + } else + ++itString; } /* this leads to a memory access violation for( itString = mStringMap.begin(); itString != mStringMap.end(); ++itString ) { pos = itString.key().find( group ); if (pos == 0) { mStringMap.remove(itString); dirty = true; } } */ QMap<QString,QDateTime>::Iterator itDateTime= mDateTimeMap.begin(); QMap<QString,QDateTime>::Iterator delDateTime; while ( itDateTime != mDateTimeMap.end() ) { pos = itDateTime.key().find( group ); if (pos == 0) { delDateTime = itDateTime; ++itDateTime; mDateTimeMap.remove(delDateTime); dirty = true; - } + } else + ++itDateTime; } /* for( itDateTime = mDateTimeMap.begin(); itDateTime != mDateTimeMap.end(); ++itDateTime ) { pos = itDateTime.key().find( group ); if (pos == 0) { mDateTimeMap.remove(itDateTime); dirty = true; } } */ if (dirty) mDirty = true; return dirty; } //US I took the following hasGroup method from a newer version from KDE. /** * Returns true if the specified group is known about. * |