Code:
opts->conf_filename != DEFAULT_CONF_FILENAME
durch
Code:
strcmp( opts->conf_filename, DEFAULT_CONF_FILENAME ) != 0
ersetzen.
Ganz richtig ist das aber auch nicht, da dann die Zeichenkette nicht freigegeben wird, wenn opts->conf_filename vom User gewollt den gleichen Inhalt hat. Ich finde die Programmierung etwas merkwürdig, man hätte sich keinen Zacken aus der Krone gebrochen, wenn man statt opts->conf_filename = DEFAULT_CONF_FILENAME eine Zuweisung mit Speicheralloziierung gemacht hätte, und dann eben den Speicher hier immer freigibt.
Besser, aber immer noch im Sinne des Erfinders wäre vielleicht:
Code:
static const char default_conf_filename[] = DEFAULT_CONF_FILENAME;
...
#ifdef XML_CONFIG
if (opts->conf_filename && opts->conf_filename != default_conf_filename) {
s_free(opts->conf_filename);
}
opts->conf_filename = default_conf_filename;
#endif
Liebe Grüße,
Axel
Lesezeichen