version 1.27, 2011/07/25 07:44:58
|
version 1.35, 2012/04/13 14:12:59
|
Line 1
|
Line 1
|
/* |
/* |
================================================================================ |
================================================================================ |
RPL/2 (R) version 4.1.2 |
RPL/2 (R) version 4.1.8 |
Copyright (C) 1989-2011 Dr. BERTRAND Joël |
Copyright (C) 1989-2012 Dr. BERTRAND Joël |
|
|
This file is part of RPL/2. |
This file is part of RPL/2. |
|
|
Line 47 instruction_sub(struct_processus *s_etat
|
Line 47 instruction_sub(struct_processus *s_etat
|
struct_objet *s_objet_argument_3; |
struct_objet *s_objet_argument_3; |
struct_objet *s_objet_resultat; |
struct_objet *s_objet_resultat; |
|
|
|
unsigned char *ptr1; |
|
unsigned char *ptr2; |
|
|
unsigned long i; |
unsigned long i; |
|
|
(*s_etat_processus).erreur_execution = d_ex; |
(*s_etat_processus).erreur_execution = d_ex; |
Line 144 instruction_sub(struct_processus *s_etat
|
Line 147 instruction_sub(struct_processus *s_etat
|
if ((*s_objet_argument_3).type == CHN) |
if ((*s_objet_argument_3).type == CHN) |
{ |
{ |
if ((*((integer8 *) (*s_objet_argument_1).objet)) > (integer8) |
if ((*((integer8 *) (*s_objet_argument_1).objet)) > (integer8) |
strlen((unsigned char *) (*s_objet_argument_3).objet)) |
longueur_chaine(s_etat_processus, |
|
(unsigned char *) (*s_objet_argument_3).objet)) |
{ |
{ |
liberation(s_etat_processus, s_objet_argument_1); |
liberation(s_etat_processus, s_objet_argument_1); |
liberation(s_etat_processus, s_objet_argument_2); |
liberation(s_etat_processus, s_objet_argument_2); |
Line 160 instruction_sub(struct_processus *s_etat
|
Line 164 instruction_sub(struct_processus *s_etat
|
return; |
return; |
} |
} |
|
|
if (((*s_objet_resultat).objet = extraction_chaine((unsigned char *) |
if ((ptr1 = pointeur_ieme_caractere(s_etat_processus, (unsigned char *) |
(*s_objet_argument_3).objet, (*((integer8 *) |
(*s_objet_argument_3).objet, (*((integer8 *) |
(*s_objet_argument_2).objet)), (*((integer8 *) |
(*s_objet_argument_2).objet)) - 1)) == NULL) |
(*s_objet_argument_1).objet)))) == NULL) |
{ |
|
liberation(s_etat_processus, s_objet_argument_1); |
|
liberation(s_etat_processus, s_objet_argument_2); |
|
liberation(s_etat_processus, s_objet_argument_3); |
|
|
|
(*s_etat_processus).erreur_execution = d_ex_argument_invalide; |
|
return; |
|
} |
|
|
|
if ((ptr2 = pointeur_ieme_caractere(s_etat_processus, ptr1, |
|
(*((integer8 *) (*s_objet_argument_1).objet)) |
|
- ((*((integer8 *) (*s_objet_argument_2).objet)) - 1))) == NULL) |
|
{ |
|
liberation(s_etat_processus, s_objet_argument_1); |
|
liberation(s_etat_processus, s_objet_argument_2); |
|
liberation(s_etat_processus, s_objet_argument_3); |
|
|
|
(*s_etat_processus).erreur_execution = d_ex_argument_invalide; |
|
return; |
|
} |
|
|
|
if (((*s_objet_resultat).objet = malloc(((ptr2 - ptr1) + 1) * |
|
sizeof(unsigned char))) == NULL) |
{ |
{ |
(*s_etat_processus).erreur_systeme = d_es_allocation_memoire; |
(*s_etat_processus).erreur_systeme = d_es_allocation_memoire; |
return; |
return; |
} |
} |
|
|
|
strncpy((unsigned char *) (*s_objet_resultat).objet, ptr1, |
|
ptr2 - ptr1)[ptr2 - ptr1] = d_code_fin_chaine; |
} |
} |
|
|
/* |
/* |