[fpc-devel] mising ansi string ref increase
Michael Van Canneyt
michael at freepascal.org
Thu Jul 22 12:50:25 CEST 2010
On Thu, 22 Jul 2010, Jonas Maebe wrote:
>
> On 22 Jul 2010, at 12:06, Martin wrote:
>
>> On 22/07/2010 09:57, Sergei Gorelkin wrote:
>>> This is by design. 'const' modifier on ansistring and other 'managed' type arguments instucts the compiler to omit refcount changes, yielding a faster code. At the same time it prohibits direct modification to the argument, but nothing can be done if you modify another location that aliases the argument.
>>> If you need proper refcounting, you should pass the argument by value (i.e. without 'const' modifier).
>>
>> So, no need to report as bug then?
>
> Indeed, Sergei is correct. In a language like Pascal, there is no way for
> the compiler to ensure that the constness of parameters is completely
> observed. It's more like a hint of the programmer to the code generator
> ("the values passed to this parameter will not changed, so you can
> optimize however you like based on that assumption") than a semantic
> condition for the compiler to guarantee ("make sure that I do not change
> values passed to this parameter in any way").
For what it is worth: Delphi behaves the same as FPC.
Michael.
More information about the fpc-devel
mailing list