--- rpl/src/instructions_g2.c 2018/12/22 13:11:52 1.66 +++ rpl/src/instructions_g2.c 2018/12/22 13:19:58 1.67 @@ -1262,6 +1262,78 @@ instruction_get(struct_processus *s_etat return; } } + else if ((*s_objet_3).type == REC) + { + if ((*s_objet_1).type != CHN) + { + if (variable_partagee == d_vrai) + { + if (pthread_mutex_unlock(&((*(*s_etat_processus) + .pointeur_variable_partagee_courante).mutex)) != 0) + { + (*s_etat_processus).erreur_systeme = d_es_processus; + return; + } + } + + liberation(s_etat_processus, s_objet_1); + liberation(s_etat_processus, s_objet_2); + + (*s_etat_processus).erreur_execution = + d_ex_erreur_type_argument; + return; + } + + s_objet_noms = (*((struct_record *) (*s_objet_3).objet)).noms; + + if ((s_enregistrement = bsearch((unsigned char *) + (*s_objet_1).objet, (*((struct_tableau *) + (*s_objet_noms).objet)).elements, + (size_t) (*((struct_tableau *) (*s_objet_noms).objet)) + .nombre_elements, sizeof(struct_objet *), + fonction_comparaison)) == NULL) + { + if (variable_partagee == d_vrai) + { + if (pthread_mutex_unlock(&((*(*s_etat_processus) + .pointeur_variable_partagee_courante).mutex)) != 0) + { + (*s_etat_processus).erreur_systeme = d_es_processus; + return; + } + } + + liberation(s_etat_processus, s_objet_1); + liberation(s_etat_processus, s_objet_2); + + (*s_etat_processus).erreur_execution = d_ex_element_inexistant; + return; + } + + indice_i = s_enregistrement - (*((struct_tableau *) + (*s_objet_noms).objet)).elements; + + // Récupération de l'objet dans le tableau données + + if ((s_objet_resultat = copie_objet(s_etat_processus, + (*((struct_tableau *) (*(*((struct_record *) + (*s_objet_3).objet)).donnees).objet)).elements[indice_i], + 'P')) == NULL) + { + if (variable_partagee == d_vrai) + { + if (pthread_mutex_unlock(&((*(*s_etat_processus) + .pointeur_variable_partagee_courante).mutex)) != 0) + { + (*s_etat_processus).erreur_systeme = d_es_processus; + return; + } + } + + (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; + return; + } + } else { if (variable_partagee == d_vrai)