So, there is many a line in the code to the effect of
fillchar(lambda[0],32,0);
Lazarus would give out a warning for it:
ecc.pas(146,11) Hint: Local variable "lambda" does not seem to be initialized
It's a useful warning in many cases, so i don't want to disable it completely.
I also don't want to be putting {%H-} everywhere.
So i edited the RTL of FPC, to redefine these functions like
Procedure FillChar(out x;count:SizeInt;Value:Byte);
Procedure FillChar(out x;count:SizeInt;Value:Boolean);
Procedure FillChar(out x;count:SizeInt;Value:Char);
This got rid of the warning, and for a time all was well.
However, i just tried to rebuild Lazarus, and there were a lot of weird crashes.
Rolling back that fix restored it's functionality, and left me with a profound feeling of WTF.
So, WTF?
Why do these generate a warning, and why making an output-only-by-definition parameter output-only breaks things?