Browse Source

+ introduced constant MaxIntResource, use it in InternalIsIntResource

Nikolay Nikolov 1 year ago
parent
commit
e51fb8020c
1 changed files with 16 additions and 13 deletions
  1. 16 13
      rtl/inc/intres.inc

+ 16 - 13
rtl/inc/intres.inc

@@ -12,6 +12,21 @@
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
  **********************************************************************}
+const
+{$if defined(CPUWASM)}
+  { Since WebAssembly is a Harvard architecture, the code is invisible in linear
+    memory and the data section starts at address 0. Resources reside after the
+    initialized data section, just before the bss (uninitialized data) section,
+    therefore it's perfectly possible that their data exist on a relatively low
+    address (less than 64KB). So, for WebAssembly we check whether the pointer
+    resides in the first 4KB of linear memory, instead of the first 64KB. Note
+    that the first 4KB of linear memory in WebAssembly aren't used by Free
+    Pascal. }
+  MaxIntResource=4095;
+{$else}
+  MaxIntResource=65535;
+{$endif}
+
 type
   PResInfoNode = ^TResInfoNode;
   TResInfoNode = packed record
@@ -100,19 +115,7 @@ var i : integer;
     s : shortstring;
     code : word;
 begin
-{$if defined(CPUWASM)}
-  { Since WebAssembly is a Harvard architecture, the code is invisible in linear
-    memory and the data section starts at address 0. Resources reside after the
-    initialized data section, just before the bss (uninitialized data) section,
-    therefore it's perfectly possible that their data exist on a relatively low
-    address (less than 64KB). So, for WebAssembly we check whether the pointer
-    resides in the first 4KB of linear memory, instead of the first 64KB. Note
-    that the first 4KB of linear memory in WebAssembly aren't used by Free
-    Pascal. }
-  InternalIsIntResource:=((PtrUInt(aStr) shr 12)=0);
-{$else}
-  InternalIsIntResource:=((PtrUInt(aStr) shr 16)=0);
-{$endif}
+  InternalIsIntResource:=PtrUInt(aStr)<=MaxIntResource;
   if InternalIsIntResource then aInt:=PtrUInt(aStr)
   else
   begin