Browse Source

* in the Win64 ABI all const record parameters are passed by reference

Sven/Sarah Barth 9 months ago
parent
commit
d9ec917586
1 changed files with 1 additions and 1 deletions
  1. 1 1
      packages/rtl-objpas/src/x86_64/invoke.inc

+ 1 - 1
packages/rtl-objpas/src/x86_64/invoke.inc

@@ -173,7 +173,7 @@ begin
           else
           else
             val := PtrUInt(aArgs[i].ValueRef);
             val := PtrUInt(aArgs[i].ValueRef);
         tkRecord:
         tkRecord:
-          if td^.RecSize in [1, 2, 4, 8] then
+          if (td^.RecSize in [1, 2, 4, 8]) and not (pfConst in aArgs[i].Info.ParamFlags) then
             val := PPtrUInt(aArgs[i].ValueRef)^
             val := PPtrUInt(aArgs[i].ValueRef)^
           else
           else
             val := PtrUInt(aArgs[i].ValueRef);
             val := PtrUInt(aArgs[i].ValueRef);