Thomas Kurz via fpc-pascal <fpc-pascal@lists.freepascal.org> schrieb am Sa., 2. Nov. 2024, 18:47:
> when I make a record type managed by adding an `Initialize` operator > according to [1], can I rely on the record being initialized at the > beginning of a function in which the record is the function result? > > Example: > > type TRec = record > // whatsoever > class operator Initialize(var aRec: TRec); > end; > > function DoSomething: TRec; > begin > // <---- can I assume that `Result` is initialized when the function is > entered? > // more code > end; > > [1] https://wiki.freepascal.org/management_operators As with any managed type result the Result variable will be initialized *outside* of the function and passed in as a var-parameter. Depending on the code and due to how the compiler manages temporary variables involved in this, this can lead to your code receiving a Result variable upon entry that had been used by a previous call. So to be on the safe side assign a Default(YourType) to it (needs current FPC 3.3.1 to work correctly) or use a local variable of the same type and overwrite the Result. Regards, Sven
_______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal