fehler in libconfigfile gefunden. bitte den fix einchecken.

wahnfried
Interessierter
Interessierter
Beiträge: 83
Registriert: Mittwoch 29. Mai 2002, 17:50

fehler in libconfigfile gefunden. bitte den fix einchecken.

Beitrag von wahnfried »

hallo,

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;
}
dbt
Administrator
Beiträge: 2675
Registriert: Donnerstag 28. September 2006, 19:18

Beitrag von dbt »

Könntest Du davon ein diff machen. Irgendwie läuft das so nicht! :gruebel: