Răsfoiți Sursa

* i386 invoke implementation: check the correct argument in the second pass

Sven/Sarah Barth 3 ani în urmă
părinte
comite
00f4aeb39b
1 a modificat fișierele cu 5 adăugiri și 5 ștergeri
  1. 5 5
      packages/rtl-objpas/src/i386/invoke.inc

+ 5 - 5
packages/rtl-objpas/src/i386/invoke.inc

@@ -780,7 +780,11 @@ begin
     for i := 0 to c do begin
       if (argidx = fResultIdx) and orgresinparam then
         Inc(argidx);
-      if pfResult in fArgs[i].ParamFlags then begin
+      if pass = 0 then
+        idx := i
+      else
+        idx := stackargs[c - i];
+      if pfResult in fArgs[idx].ParamFlags then begin
         fResultIdx := argidx;
         fResultInParam := True;
       end;
@@ -789,10 +793,6 @@ begin
         Inc(stackcount);
         Continue;
       end;
-      if pass = 0 then
-        idx := i
-      else
-        idx := stackargs[c - i];
       if pass = 0 then
         fArgInfos[argidx].ArgType := TArgType.GenReg
       else