[fpc-devel] Const optimization is a serious bug

Florian Klaempfl florian at freepascal.org
Thu Jul 7 08:45:14 CEST 2011


Am 07.07.2011 08:35, schrieb Alexander Klenin:
>> As further support for #1, consider: With a class, you do not have to pass
>> it to a procedure as var, but when you modify the instance, you modify the
>> same instance as was passed to the procedure. That is how classes work.
>> Having a variable point to the same object as another variable does in fact
>> mean it's the same instance, the same object. That is Object Pascal's object
>> model. But with strings, if you want to modify the string in a procedure and
>> have that affect the argument initially passed to the procedure you *have*
>> to use var. That alone should be convincing evidence that the programmer is
>> always supposed to be able to assume that unique variables are unique
>> instances for automatically managed strings and arrays.
> This is also a good argument which I omitted before in the interests of brevity.
> 
> Put in another words, current "const string" implementation honors the
> implicit contract of
> "adding const in front of the string parameter cancels refcounting",
> at the cost of breaking the implicit contract of "refcounted values
> are indistinguishable
> from simple values (except maybe in performance)".

As I have shown before in this thread, non ref. counted values e.g.
shortstrings are affected by the same problem.



More information about the fpc-devel mailing list