Browse Source

Avoid wrap on 32-bit system for StackTop calculation

git-svn-id: trunk@39735 -
pierre 6 years ago
parent
commit
16e2bdad5a
1 changed files with 5 additions and 1 deletions
  1. 5 1
      rtl/inc/system.inc

+ 5 - 1
rtl/inc/system.inc

@@ -717,7 +717,11 @@ End;
 {$ifndef FPC_SYSTEM_HAS_STACKTOP}
 function StackTop: pointer;
 begin
-  result:=StackBottom+StackLength;
+  { Avoid wrap to zero on 32-bit }
+  if ptruint(StackBottom)+ StackLength > high(ptruint) then
+    result:=pointer(ptruint(high(ptruint)))
+  else
+    result:=StackBottom + StackLength;
 end;
 {$endif FPC_SYSTEM_HAS_STACKTOP}