Anzeige:
Ergebnis 1 bis 2 von 2

Thema: lsyncd.c:966: warning: comparison with string literal results in unspecified behavior

  1. #1
    Registrierter Benutzer
    Registriert seit
    15.05.2001
    Beiträge
    88

    lsyncd.c:966: warning: comparison with string literal results in unspecified behavior

    moins,

    an der Stelle steht:

    Code:
    965:#ifdef XML_CONFIG
    966-    if (opts->conf_filename && opts->conf_filename != DEFAULT_CONF_FILENAME) {
    967-            s_free(opts->conf_filename);
    968-    }
    969-    opts->conf_filename = DEFAULT_CONF_FILENAME;
    970-#endif
    Ich weiss, dass die Warnung mit dem CFLAG -Wno-address
    verschwinden lassen kann, aber das behebt nur das Symptom.

    Wie fixt man das richtig?


    Gruss

    http://nopaste.info/c1d9c99dfc.html
    ;)

  2. #2
    Registrierter Benutzer Avatar von sommerfee
    Registriert seit
    02.07.2006
    Beiträge
    1.603
    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
    Geändert von sommerfee (26-10-2010 um 07:26 Uhr)

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •