--- rpl/src/instructions_o1.c 2010/03/06 18:29:07 1.6 +++ rpl/src/instructions_o1.c 2010/03/08 14:28:20 1.7 @@ -2649,7 +2649,9 @@ instruction_open(struct_processus *s_eta } if (((type_acces != 'I') && (position_clef != 0)) || - ((type_acces == 'I') && (position_clef == 0))) + ((type_acces == 'I') && (position_clef == 0) && + ((type_ouverture == 'N') || (type_ouverture == 'R') || + (type_ouverture == 'S')))) { liberation(s_etat_processus, s_objet_argument); @@ -2820,8 +2822,20 @@ instruction_open(struct_processus *s_eta } else { + if (position_clef == 0) + { + free(nom); + + liberation(s_etat_processus, s_objet_argument); + liberation(s_etat_processus, s_objet_resultat); + + (*s_etat_processus).erreur_execution = + d_ex_erreur_parametre_fichier; + return; + } + if (initialisation_fichier_acces_indexe( - s_etat_processus, sqlite, + s_etat_processus, sqlite, position_clef, (format == 'N') ? d_faux : d_vrai) != d_absence_erreur) { @@ -3056,8 +3070,20 @@ instruction_open(struct_processus *s_eta } else { + if (position_clef == 0) + { + free(nom); + + liberation(s_etat_processus, s_objet_argument); + liberation(s_etat_processus, s_objet_resultat); + + (*s_etat_processus).erreur_execution = + d_ex_erreur_parametre_fichier; + return; + } + if (initialisation_fichier_acces_indexe( - s_etat_processus, sqlite, + s_etat_processus, sqlite, position_clef, (format == 'N') ? d_faux : d_vrai) != d_absence_erreur) { @@ -3154,8 +3180,22 @@ instruction_open(struct_processus *s_eta } else { + if (position_clef == 0) + { + free(nom); + + liberation(s_etat_processus, + s_objet_argument); + liberation(s_etat_processus, + s_objet_resultat); + + (*s_etat_processus).erreur_execution = + d_ex_erreur_parametre_fichier; + return; + } + if (initialisation_fichier_acces_indexe( - s_etat_processus, sqlite, + s_etat_processus, sqlite, position_clef, (format == 'N') ? d_faux : d_vrai) != d_absence_erreur) { @@ -3309,9 +3349,21 @@ instruction_open(struct_processus *s_eta } } else - { + { + if (position_clef == 0) + { + free(nom); + + liberation(s_etat_processus, s_objet_argument); + liberation(s_etat_processus, s_objet_resultat); + + (*s_etat_processus).erreur_execution = + d_ex_erreur_parametre_fichier; + return; + } + if (initialisation_fichier_acces_indexe( - s_etat_processus, sqlite, + s_etat_processus, sqlite, position_clef, (format == 'N') ? d_faux : d_vrai) != d_absence_erreur) {