diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/kreadconfig/kreadconfig.cpp | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src/kreadconfig/kreadconfig.cpp b/src/kreadconfig/kreadconfig.cpp index c1a6d069..dcd5ed18 100644 --- a/src/kreadconfig/kreadconfig.cpp +++ b/src/kreadconfig/kreadconfig.cpp @@ -67,21 +67,32 @@ int main(int argc, char **argv) KInstance inst(&aboutData); KConfig *konfig; + bool configMustDeleted = false; if (file.isEmpty()) konfig = KGlobal::config(); else + { konfig = new KConfig(file, true, false); - + configMustDeleted=true; + } konfig->setGroup(group); if(type=="bool") { dflt=dflt.lower(); bool def=(dflt=="true" || dflt=="on" || dflt=="yes" || dflt=="1"); - return !konfig->readBoolEntry(key, def); + bool retValue = !konfig->readBoolEntry(key, def); + if ( configMustDeleted ) + delete konfig; + return retValue; } else if(type=="num") { - return konfig->readLongNumEntry(key, dflt.toLong()); + long retValue = konfig->readLongNumEntry(key, dflt.toLong()); + if ( configMustDeleted ) + delete konfig; + return retValue; } else { - /* Assume it's a string... */ + /* Assume it's a string... */ fprintf(stdout, "%s\n", konfig->readEntry(key, dflt).local8Bit().data()); + if ( configMustDeleted ) + delete konfig; return 0; } } |