[fpc-devel] mising ansi string ref increase

Martin fpc at mfriebe.de
Thu Jul 22 13:12:01 CEST 2010


On 22/07/2010 11:50, Michael Van Canneyt wrote:
>
>
> 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.

I saw the error in my thinking, after Jonas (re-) explained the meaning 
of "const".

and I guess it applies to other types to (as long as they are passed by 
reference): e.g records are likely to see changes too...



More information about the fpc-devel mailing list