diff --git a/compiler/tree.pas b/compiler/tree.pas index 1a257e11d0..2800a13b8d 100644 --- a/compiler/tree.pas +++ b/compiler/tree.pas @@ -1673,7 +1673,23 @@ unit tree; if p^.varstateset then exit; case p^.treetype of - typeconvn,subscriptn : + typeconvn : + if p^.convtyp in + [ + tc_cchar_2_pchar, + tc_cstring_2_pchar, + tc_array_2_pointer + ] then + set_varstate(p^.left,false) + else if p^.convtyp in + [ + tc_pchar_2_string, + tc_pointer_2_array + ] then + set_varstate(p^.left,true) + else + set_varstate(p^.left,must_be_valid); + subscriptn : set_varstate(p^.left,must_be_valid); vecn: begin @@ -1895,7 +1911,10 @@ unit tree; end. { $Log$ - Revision 1.106 1999-12-22 01:01:52 peter + Revision 1.107 2000-01-06 01:10:33 pierre + * fixes for set_varstate on conversions + + Revision 1.106 1999/12/22 01:01:52 peter - removed freelabel() * added undefined label detection in internal assembler, this prevents a lot of ld crashes and wrong .o files @@ -1998,4 +2017,3 @@ end. * procedure of object and addrn fixes } -