Bonjour,

Alors voila, j'ai un petit soucis. En gros, j'ai une liste chainée, d'un élément au moment du problème, composé d'un pointeur sur next, un sur previous. J'envoie cette liste chainée dans une fonction, qui me permet de checker quelque chose en la parcourant.
Le problème est que, avant d'entrer dans la fonction, le pointeur sur prev de la liste pointe sur NULL, et après être entré dans ma fonction, le pointeur sur prev pointe sur une structure appartenant à une liste chainé différente, composé du même type de structure mais complétement différente. ça apparaît comme par magie, je ne comprends vraiment pas.

Voici mon code :
Code : 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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 
void            check_the_ant_room(t_ant *ant, t_laby *laby)
{
  t_room        *tmp; /*je crée un pointeur temporaire pour me balader dans ma liste sans en changer le pointeur initial */
 
  tmp = ant->room_possible;
  while (tmp != NULL)
    {
/* c'est ici que ça foire, la fct is_it_in prend un char* name, et un t_room alrdy_pass */
/* a ce stade, alrdy_pass est composé ainsi : NULL<-struct->NULL */
      if (is_it_in(tmp->name, ant->alrdy_pass) == TRUE)
        destroy_my_room(&tmp);
      else if (search_solution(tmp, laby, laby->pos_end, ant->alrdy_pass)
               == FALSE)
        destroy_my_room(&tmp);
      else
        tmp = tmp->next;
    }
}
 
/*Entrée dans is_it_in*/
 
t_bool          is_it_in(char *name, t_room *room)
{
  t_room        *temp;
 
  temp = room;
/* techniquement, cette boucle ne devrait pas s'effectuer, pourtant elle trouve une structure pointée par prev, une structure fonctionnelle et remplie mais qui ne devrait pas être ici*/
  while (temp->prev != NULL) 
     temp = temp->prev; 
  while (temp != NULL)
    {
      if (my_strcmp(name, temp->name) == TRUE)
        return (TRUE);
      temp = temp->next;
    }
  return (FALSE);
}
Ce n'est peut être pas très clair comme cela, mais je ne comprends absolument pas.
De plus, il me semble que ce n'est pas la première fois que cela m'arrive, c'est rare mais des choses apparaissent quelques fois d'une fonction à l'autre.