[fpc-pascal] FPC 3.2fixes UTF8Decode strange place

José Mejuto joshyfun at gmail.com
Wed Oct 28 09:26:11 CET 2020


El 27/10/2020 a las 21:25, AlexeyT via fpc-pascal escribió:
> rtl/inc/ustrings.inc
> 
> function UTF8ToUnicode(Dest: PUnicodeChar; MaxDestChars: SizeUInt; 
> Source: PChar; SourceBytes: SizeUInt): SizeUInt;
> 
> 
> a) it has "If (PreChar<>13) and FALSE then" and later some big block. 
> with a comment which tells that "and FALSE" is on purpose and block is 
> ignored. ?????
> 
> b) after I removed "that block" I got such trimmed src

Hello,

As the author of that piece of code, UTF8 recommends expanding LF line 
endings to CR+LF but this will generate some troubles and to try to 100% 
conform the spec. the conversion has been added, but disabled so code 
maintainers can easily remove them if needed. If you remove the piece of 
code about #13 you can safely remove the check about #10 which is now 
nonsense so you end with:

-------------------
while (OutputUnicode<MaxDestChars) and (InputUTF8<SourceBytes) do
     begin
       IBYTE:=byte(Source[InputUTF8]);
       if (IBYTE and $80) = 0 then
         begin
           //One character US-ASCII, convert it to unicode
           Dest[OutputUnicode]:=WideChar(IBYTE);
           inc(OutputUnicode);
           PreChar:=IBYTE;
           inc(InputUTF8);
------------------


Have a  nice day.

-- 



More information about the fpc-pascal mailing list