On 28.04.2019 22:53, Jonas Maebe wrote:
On 28/04/2019 22:21, Ondrej Pokorny wrote:
This difference results in the bug #35461 I mentioned above.

Indeed. It's also documented (see the last remark on https://freepascal.org/docs-html/ref/refse24.html , although there seems to be something wrong with the formatting). Changing that would slow down the use of ansistring constants a lot though (which most people don't like either).

OK, I understand now. We have the assignment:

S1 := S2;

There are (among others) these 2 cases:

1.) If S2 is a constant, S1 will point to a read-only buffer and the refcount will be -1. This is wanted because "changing that would slow down the use of ansistring constants a lot". It is not implementation-compatible with Delphi.

2.) If S2 is a UTF8String and S1 is an AnsiString with CP=UTF8, S1 gains a new copy of S2 with refcount = 1. This is wanted so because it is implementation-compatible with Delphi and people may depend on this. It slows down the use of the UTF8String type a lot.

This seems like a great ambivalence to me. But no problem, I'll change all method parameters that expect UTF8 strings from UTF8String to RawByteString and manually take care that only UTF8 data is fed to them.

Thanks
Ondrej

_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to