Trying to detect at unit initialization if a memory manager has been installed (xtensa-freertos) fails on FreeRTOS target. It appears that IsMemoryManagerSet[1] always returns false for this target, even if a custom memory manager has been installed. Looking at the implementation of IsMemoryManagerSet shows that it will always return false if either HAS_MEMORYMANAGER or FPC_NO_DEFAULT_MEMORYMANAGER is defined, if none of these are defined, it will check if the getmem & freememare different to the system defined routines.
For FreeRTOS both HAS_MEMORYMANAGER and FPC_NO_DEFAULT_MEMORYMANAGER are defined, so it is impossible to detect if a custom memory manager has been installed using IsMemoryManagerSet.
a) Am I using the correct approach to detect if a memory manager is installed? I want to check if it is safe to use GetMem/FreeMem. b) Is there a reason for the behaviour of IsMemoryManagerSet?
[1] From rtl/inc/heap.inc:
function IsMemoryManagerSet:Boolean;
begin
{$ifdef HAS_MEMORYMANAGER}
Result:=false;
{$else HAS_MEMORYMANAGER}
{$ifdef FPC_NO_DEFAULT_MEMORYMANAGER}
Result:=false;
{$else not FPC_NO_DEFAULT_MEMORYMANAGER}
IsMemoryManagerSet := ()
or ();
{$endif notFPC_NO_DEFAULT_MEMORYMANAGER}
{$endif HAS_MEMORYMANAGER}
end;