--- rpl/src/gestion_variables.c 2012/10/07 08:18:35 1.61 +++ rpl/src/gestion_variables.c 2012/10/08 07:37:06 1.63 @@ -1958,6 +1958,7 @@ copie_arbre_variables(struct_processus * struct_liste_variables_statiques *l_element_statique_courant; struct_variable s_variable; + struct_variable_statique s_variable_statique; unsigned char *ptr; @@ -2181,8 +2182,31 @@ copie_arbre_variables(struct_processus * ptr++; } + // Il faut copier la variable pour la dissocier de la variable + // restant dans le thread parent. + + s_variable_statique = (*(*l_element_statique_courant).variable); + + if (copie_objet(s_etat_processus, s_variable_statique.objet, 'P') + == NULL) + { + (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; + return; + } + + if ((s_variable_statique.nom = malloc((strlen( + (*(*l_element_statique_courant).variable).nom) + 1) * + sizeof(unsigned char))) == NULL) + { + (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; + return; + } + + strcpy(s_variable_statique.nom, (*(*l_element_statique_courant) + .variable).nom); + if (creation_variable_statique(s_nouvel_etat_processus, - (*l_element_statique_courant).variable) == d_erreur) + &s_variable_statique) == d_erreur) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; return;