diff --git a/compiler/jvm/njvmcnv.pas b/compiler/jvm/njvmcnv.pas index aeabe78b17..30958eaf3b 100644 --- a/compiler/jvm/njvmcnv.pas +++ b/compiler/jvm/njvmcnv.pas @@ -42,7 +42,7 @@ interface procedure second_int_to_int;override; { procedure second_string_to_string;override; } - { procedure second_cstring_to_pchar;override; } + procedure second_cstring_to_pchar;override; { procedure second_string_to_chararray;override; } { procedure second_array_to_pointer;override; } function first_int_to_real: tnode; override; @@ -514,6 +514,17 @@ implementation end; + procedure tjvmtypeconvnode.second_cstring_to_pchar; + begin + { don't use is_chararray because it doesn't support special arrays } + if (left.resultdef.typ<>arraydef) or + (tarraydef(left.resultdef).elementdef.typ<>orddef) or + (torddef(tarraydef(left.resultdef).elementdef).ordtype<>uchar) then + internalerror(2011081304); + location_copy(location,left.location); + end; + + procedure tjvmtypeconvnode.second_int_to_real; var srcsize, ressize: longint; diff --git a/rtl/java/sstringh.inc b/rtl/java/sstringh.inc index d5e2e69180..483659d6c0 100644 --- a/rtl/java/sstringh.inc +++ b/rtl/java/sstringh.inc @@ -47,7 +47,7 @@ type end; AnsiCharArrayClass = class sealed (JLObject) - class function CreateFromLiteralStringBytes(const u: unicodestring; maxlen: byte): TAnsiCharArray; static; + class function CreateFromLiteralStringBytes(const u: unicodestring): TAnsiCharArray; static; end; //Function Pos (Const Substr : Ansistring; Const Source : Ansistring) : SizeInt; diff --git a/rtl/java/sstrings.inc b/rtl/java/sstrings.inc index 9529468aad..4b5176d824 100644 --- a/rtl/java/sstrings.inc +++ b/rtl/java/sstrings.inc @@ -184,12 +184,12 @@ begin end; -class function AnsiCharArrayClass.CreateFromLiteralStringBytes(const u: unicodestring; maxlen: byte): TAnsiCharArray; +class function AnsiCharArrayClass.CreateFromLiteralStringBytes(const u: unicodestring): TAnsiCharArray; var i: longint; begin { used to construct constant chararrays from Java string constants } - setlength(result,maxlen); + setlength(result,length(u)); for i:=1 to system.length(u) do result[i-1]:=ansichar(ord(u[i])); end;