SYSTEM_HAS_FEATURE_MONITOR seems to be on by default - I never
explicitly turned it on, so it probably is the default.
Turning SYSTEM_HAS_FEATURE_MONITOR off may be a good way to show that
this is the problem and a short term workaround, but if you are
providing source code that you expect to be widely used then you
probably need to fix the issue with SYSTEM_HAS_FEATURE_MONITOR turned on.
On 18/02/2026 16:25, Adriaan van Os via fpc-pascal wrote:
Tony Whyman via fpc-pascal wrote:
Supplementing my point below, I went back and checked my notes. The
TObject layout post 3.2 (in my copy of trunk) is now
TObject = class
{$IFDEF SYSTEM_HAS_FEATURE_MONITOR}
strict private
_MonitorData : Pointer;
private
function SetMonitorData(aData,aCheckOld : Pointer) :
Pointer; inline;
function GetMonitorData: Pointer; inline;
{$ENDIF}
protected
function GetDisposed : Boolean; inline;
Property Disposed : Boolean Read GetDisposed;
public
with everything before "public" having been added. The big change is
the addition of "_MonitorData". This bumps the offset of all later
fields up by sizeof(pointer). If you have code that makes assumptions
about the object layout - and this very much applies to code that
tries to import an object from C++ then your previous assumptions are
invalid.
Is SYSTEM_HAS_FEATURE_MONITOR defined by default in the build process
? I assume, the compiler can be built without it ?
Regards,
Adriaan van Os
_______________________________________________
fpc-pascal maillist - [email protected]
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal