[fpc-devel] Const optimization is a serious bug
Jonas Maebe
jonas.maebe at elis.ugent.be
Mon Jul 11 11:13:58 CEST 2011
On 11 Jul 2011, at 02:08, Chad Berchek wrote:
> Even if the calling convention does not change, the semantics can, as currently implemented. Even within a single platform const is ill-defined. Consider the case of AnsiString. There are three cases as it is currently implemented:
>
> 1) Ref count > 1 when passed as const parameter results in strict pass-by-value semantics
> 2) Ref count = 1 and you modify the original instance in-place results in the value of the parameter changing
> 3) Ref count = 1 and you modify the original reference such that the instance's ref count decreases to zero and it may crash or just give weird behavior
Case 1) is the same as 2) and 3). Even if the reference count is initially 100, the called routine can overwrite all but one of them first and then either do 2) or 3).
Jonas
More information about the fpc-devel
mailing list