ich habe in libconfigfile einen fehler in ::getString gefunden.
aufmerksam wurde ich auf den fehler, weil bei der kanalsuche
für die einzeltranspondersuche weder frequenz/symbolrate,
noch der satellit angezeigt, bzw. die satauswahl (wenn diseq an
ist) ging. und zwar wird der defaultVal nicht richtig gehandhabt.
ich habe mal den fix unten eingestellt. der fix geht davon aus,
das wenn ein defaultVal <> "" übergeben wird, das dann "" als
keyval nicht zulässig ist. ansonsten müsste libconfigfile vom
konzept her erweitert werden.
im übrigen wird, wenn der key existiert, aber keinen wert hat,
der defaultVal NIE als wert gespeichert. auch das sollte noch
einmal überlegt werden.
es sollte überlegt werden ob "kein Wert" bei existierendem key
generell als nicht zulässig behandelt werden sollte. dann würde
immer wenn configData[key] == "" , defaultVal angenommen,
gespeichert und zurückgegeben werden. also auch in den intxx
und bool funktionen.
Code: Alles auswählen
//...../apps/misc/libs/libconfigfile/configfile.cpp
std::string CConfigFile::getString(const std::string & key, const std::string & defaultVal)
{
if (configData.find(key) == configData.end())
{
if (saveDefaults) {
unknownKeyQueryedFlag = true;
storeString(key, defaultVal);
}
else {
return defaultVal;
}
}
//return configData[key];
std::string keyval = configData[key];
if((keyval == "") && (defaultVal != ""))
keyval = defaultVal;
return keyval;
}