author | zautrix <zautrix> | 2004-07-03 23:59:49 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2004-07-03 23:59:49 (UTC) |
commit | 22470ff7ffe034a94bedb52b517ee4d245ae2808 (patch) (side-by-side diff) | |
tree | 44cbe6a45c6ebb6c5dd64fa035cd995ee3b4d463 /microkde | |
parent | 260befadfaa64d94de7d38d7f6cad0d22f52c226 (diff) | |
download | kdepimpi-22470ff7ffe034a94bedb52b517ee4d245ae2808.zip kdepimpi-22470ff7ffe034a94bedb52b517ee4d245ae2808.tar.gz kdepimpi-22470ff7ffe034a94bedb52b517ee4d245ae2808.tar.bz2 |
Fixed memory access violation in distlist handling
-rw-r--r-- | microkde/kconfig.cpp | 44 |
1 files changed, 41 insertions, 3 deletions
diff --git a/microkde/kconfig.cpp b/microkde/kconfig.cpp index 3f23ed2..b882adb 100644 --- a/microkde/kconfig.cpp +++ b/microkde/kconfig.cpp @@ -325,60 +325,98 @@ 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; + 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; + } + + } + /* 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; + } - QMap<QString,QString>::Iterator 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; + */ + 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; + } + + } + /* 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. * * @param group The group to search for. * @return Whether the group exists. */ bool KConfig::hasGroup(const QString &group) const |