Bonjour,
J'aimerais vérifier l'intégrité d'un fichier en ajoutant un message d'erreur à un log, qui n'est autre qu'un tableau de chaînes de caractères en (char **), à chaque fois qu'une anomalie est détectée. J'ai donc créé une fonction qui ajoute un message d'erreur contenu dans une table (de type tableau statique de chaînes statiques de caractères) à ce log, avec les coordonnées de l'anomalie (i_module ; i_error).
Cependant, j'ai une segfault dès que je touche à mon pointeur à travers un nouveau pointeur... Je dois pas avoir les yeux en face des trous, mais ça fait quand même pas mal de temps que je debug sans résultats : pourriez-vous m'aider, je vous prie ?
Voici la fameuse fonction :
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 static void add_error_msg(bool offers, size_t *n_errors, size_t i_module, size_t i_error, char ***out) { *out = NULL; *out = realloc(*out, (++(*n_errors)) * sizeof **out); if(*out != NULL) { char *temp = (*out)[*n_errors - 1]; if((temp = malloc((strlen("Module XXXX : ") + 1 + strlen(error_table[i_error])) * sizeof *temp)) != NULL) sprintf(temp, "Module %u%c : %s", i_module, offers ? 'o' : 'e', error_table[i_error]); else fprintf(stderr, "Impossible d'allouer un message d'erreur"); } else fprintf(stderr, "Impossible d'allouer le log d'erreur"); } /* ------------------------------------------------------------------------ Utilisation : */ char **log = NULL; size_t n_errors = 0; add_error_msg(true, &n_errors, 0, 0, &log); // Par exemple
Merci d'avance.
Partager