diff options
author | jonas <jonas@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2016-03-05 15:32:15 +0000 |
---|---|---|
committer | jonas <jonas@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2016-03-05 15:32:15 +0000 |
commit | 2d52fca3243fbf034fe1d8fe466fc8a2e46d150d (patch) | |
tree | 83524ad6ed89666b0f53ec9afb92deb08ed30901 /rtl/java | |
parent | eb08d5ff4742776ad33065549ba1d043e4406564 (diff) | |
download | fpc-2d52fca3243fbf034fe1d8fe466fc8a2e46d150d.tar.gz |
* fixed UTF8Decode for JVM:
o pass length of result array as maximum length instead of that of an empty
string
o the returned length of Utf8ToUnicode() includes a terminating #0 char,
subtract that again when creating a new unicode string with the
characters
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@33157 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'rtl/java')
-rw-r--r-- | rtl/java/justrings.inc | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/rtl/java/justrings.inc b/rtl/java/justrings.inc index e3f3ff1c4a..bc40e03e54 100644 --- a/rtl/java/justrings.inc +++ b/rtl/java/justrings.inc @@ -794,18 +794,15 @@ function UTF8Encode(const s : UnicodeString) : RawByteString; function UTF8Decode(const s : RawByteString): UnicodeString; var i : SizeInt; - hs : UnicodeString; chars: array of widechar; begin result:=''; if s='' then exit; - SetLength(chars,length(s)); - i:=Utf8ToUnicode(pwidechar(chars),length(hs)+1,pchar(s),length(s)); + SetLength(chars,length(s)+1); + i:=Utf8ToUnicode(pwidechar(chars),length(s)+1,pchar(s),length(s)); if i>0 then - begin - result:=JLString.Create(chars,0,i); - end; + result:=JLString.Create(chars,0,i-1); end; |