mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-07 05:08:06 +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;
|
||||
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}
|
||||
if InternalIsIntResource then aInt:=PtrUInt(aStr)
|
||||
else
|
||||
begin
|
||||
|
Loading…
Reference in New Issue
Block a user