diff --git a/compiler/nld.pas b/compiler/nld.pas index 324af33c53..5b4f74170c 100644 --- a/compiler/nld.pas +++ b/compiler/nld.pas @@ -944,7 +944,15 @@ implementation enumdef : hp.left:=ctypeconvnode.create_internal(hp.left,s32inttype); arraydef : - hp.left:=ctypeconvnode.create(hp.left,charpointertype); + begin + if is_chararray(hp.left.resulttype.def) then + hp.left:=ctypeconvnode.create_internal(hp.left,charpointertype) + else + if is_widechararray(hp.left.resulttype.def) then + hp.left:=ctypeconvnode.create_internal(hp.left,widecharpointertype) + else + CGMessagePos1(hp.left.fileinfo,type_e_wrong_type_in_array_constructor,hp.left.resulttype.def.typename); + end; orddef : begin if is_integer(hp.left.resulttype.def) and @@ -1172,7 +1180,10 @@ begin end. { $Log$ - Revision 1.140 2004-12-05 12:28:11 peter + Revision 1.141 2004-12-07 13:52:54 michael + * Convert array of widechar to pwidechar instead of pchar + + Revision 1.140 2004/12/05 12:28:11 peter * procvar handling for tp procvar mode fixed * proc to procvar moved from addrnode to typeconvnode * inlininginfo is now allocated only for inline routines that diff --git a/compiler/psystem.pas b/compiler/psystem.pas index b9542e7b5d..977ec6417d 100644 --- a/compiler/psystem.pas +++ b/compiler/psystem.pas @@ -202,6 +202,7 @@ implementation addtype('$boolean',booltype); addtype('$void_pointer',voidpointertype); addtype('$char_pointer',charpointertype); + addtype('$widechar_pointer',widecharpointertype); addtype('$void_farpointer',voidfarpointertype); addtype('$openchararray',openchararraytype); addtype('$file',cfiletype); @@ -286,6 +287,7 @@ implementation loadtype('boolean',booltype); loadtype('void_pointer',voidpointertype); loadtype('char_pointer',charpointertype); + loadtype('widechar_pointer',widecharpointertype); loadtype('void_farpointer',voidfarpointertype); loadtype('file',cfiletype); loadtype('pvmt',pvmttype); @@ -386,6 +388,7 @@ implementation { some other definitions } voidpointertype.setdef(tpointerdef.create(voidtype)); charpointertype.setdef(tpointerdef.create(cchartype)); + widecharpointertype.setdef(tpointerdef.create(cwidechartype)); voidfarpointertype.setdef(tpointerdef.createfar(voidtype)); cfiletype.setdef(tfiledef.createuntyped); cvarianttype.setdef(tvariantdef.create(vt_normalvariant)); @@ -534,7 +537,10 @@ implementation end. { $Log$ - Revision 1.73 2004-11-08 22:09:59 peter + Revision 1.74 2004-12-07 13:52:54 michael + * Convert array of widechar to pwidechar instead of pchar + + Revision 1.73 2004/11/08 22:09:59 peter * tvarsym splitted Revision 1.72 2004/10/15 09:14:17 mazen diff --git a/compiler/symdef.pas b/compiler/symdef.pas index de7ebae2ab..30a566a92a 100644 --- a/compiler/symdef.pas +++ b/compiler/symdef.pas @@ -714,6 +714,7 @@ interface generrortype, { error in definition } voidpointertype, { pointer for Void-Pointerdef } charpointertype, { pointer for Char-Pointerdef } + widecharpointertype, { pointer for WideChar-Pointerdef } voidfarpointertype, cformaltype, { unique formal definition } voidtype, { Void (procedure) } @@ -6123,7 +6124,10 @@ implementation end. { $Log$ - Revision 1.282 2004-12-05 12:28:11 peter + Revision 1.283 2004-12-07 13:52:54 michael + * Convert array of widechar to pwidechar instead of pchar + + Revision 1.282 2004/12/05 12:28:11 peter * procvar handling for tp procvar mode fixed * proc to procvar moved from addrnode to typeconvnode * inlininginfo is now allocated only for inline routines that