mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-01 23:10:24 +02:00
* workaround for WebAssembly resource names possibly residing in memory below 64KB
This commit is contained in:
parent
3180c985ed
commit
c96b0f6ca5
@ -100,7 +100,19 @@ var i : integer;
|
|||||||
s : shortstring;
|
s : shortstring;
|
||||||
code : word;
|
code : word;
|
||||||
begin
|
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);
|
InternalIsIntResource:=((PtrUInt(aStr) shr 16)=0);
|
||||||
|
{$endif}
|
||||||
if InternalIsIntResource then aInt:=PtrUInt(aStr)
|
if InternalIsIntResource then aInt:=PtrUInt(aStr)
|
||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
|
Loading…
Reference in New Issue
Block a user