[fpc-pascal] SetLength warnings - request

Jonas Maebe jonas at freepascal.org
Wed Jan 2 18:46:00 CET 2019

On 02/01/19 18:31, Martok wrote:
> Am 02.01.2019 um 17:23 schrieb Sven Barth via fpc-pascal:
>> Even in Delphi situations can occur where a dynamic array Result variable is
>> non-Nil already upon entry and then SetLength will simply manipulate that
>> preexisting array instead of working on a new array. In most cases that probably
>> won't have a real effect as the array is either set to empty anyway or all it's
>> elements are initialized by the function. That doesn't change the fact however
>> that the behavior *is* there and can potentially lead to hard to debug problems.
>> Anything else can potentially be a bug lying in wait.
> Again, why is this not changed?
> Clearly we can't change Delphi, but there is no real reason not to be better
> than them. And it *is* undocumented for them, so we'd still be compatible, just
> compatible-on-the-safe-side.

Then we will get bug reports that FPC is slower than Delphi and 
generates more code, because it will have to allocate and 
initialise/finalise a separate temp instead of just passing an existing 
one without doing anything. Possibly followed by assigning this existing 
temp to its final destination after the function call, instead of 
directly passing the target as function result (for which we also have 
received bug reports in the past).


More information about the fpc-pascal mailing list