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.