Verstehe valgrind Fehler nicht



  • Hallo, bin sehr unter Zeitnot und ich finde meinen Fehler nicht.
    Hab mit valgrind mein Programm gecheckt und aufgrund der Zeile

    ´  name_of_file_temporary = strncpy(name_of_file_temporary, *name_of_file, 
        length_of_file_name - LENGTH_OF_FILE_EXTENSION_POINT_DB);
    

    bekomme ich diesen Fehler (habs mit Debug printfs überprüft)
    Invalid write of size 2

    hier die ganze Funktion

    int addHtmlFileExtensionToFileName(char **name_of_file)
    {
      int error_code = 0;
      char *name_of_file_temporary = NULL;
      int length_of_file_name = strlen(*name_of_file);
    
      error_code = allocateStringMemory(&name_of_file_temporary,
        length_of_file_name + 1);
    
      if(error_code != COMPARE_CONSTANT_ZERO)
      {
        return error_code;
      }
    
      name_of_file_temporary = strncpy(name_of_file_temporary, *name_of_file, 
        length_of_file_name - LENGTH_OF_FILE_EXTENSION_POINT_DB);
      name_of_file_temporary[length_of_file_name -
        LENGTH_OF_FILE_EXTENSION_POINT_DB] = NULL_CHARACTER;
    
      name_of_file_temporary = strncat(name_of_file_temporary, HTML_FILE_EXTENSION,
        NUMBER_OF_CHARACTERS_OF_HTML_FILE_EXTENSION);
    
      *name_of_file = name_of_file_temporary;
    
      return NO_ERROR;
    }
    

    Bitte Bitte helft mir, ich brauch das unbedingt.



  • mit LENGTH_OF_FILE_EXTENSION_POINT_DB ist 3 gemeint.
    HTML_FILE_EXTENSION entspricht ".html"


  • Mod

    Welchen Wert hat length_of_file_name? Was macht allocateStringMemory? Kannst du ein minimales, compilierbares Beispiel geben, welches den Fehler noch zeigt?



  • name_of_file_temporary dürfte wohl auf diffusen Speicher verweisen.
    Und

    sprintf(name_of_file_temporary,"%.*s",length_of_file_name - LENGTH_OF_FILE_EXTENSION_POINT_DB,*name_of_file);
    

    fasst deine beiden Konstrukte zusammen.


Anmelden zum Antworten