[fpc-pascal] Reproducible code: DLL calling Firebird crashes

Mark Morgan Lloyd markMLl.fpc-pascal at telemetry.co.uk
Tue Sep 30 22:17:59 CEST 2014

Sven Barth wrote:

> The only other alternative would be to add the RTL initialization code 
> to each exported function. I don't consider this a viable alternative.

Which is more or less what Reinier's working code did. I'd hate that to 
be an implicit default.

> Note: Dynamic packages won't have this problem, because:
> - for packages linked at compile time the initialization is run as part 
> of the program initialization AFTER the OS has initialized the library 
> (which doesn't do much in case of a package)
> - for packages loaded at runtime it's done as part of the LoadPackage call
> That's however only possible, because dynamic packages are very 
> different from simple libraries (and stuffed with compiler magic).

Is it possible for code in a unit to determine what sort of project it's 
part of, i.e. a standalone program, a library etc.? Could the RTL have a 
flag indicating that initialisation (or finalisation?) blocks were 
currently being run, and anything called should assume that facilities 
were restricted?

Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk

[Opinions above are the author's, not those of his employers or colleagues]

More information about the fpc-pascal mailing list