Browse Source

* also move to the next field when skipping it

git-svn-id: trunk@39699 -
svenbarth 7 years ago
parent
commit
17ebe6e28f
1 changed files with 3 additions and 1 deletions
  1. 3 1
      packages/libffi/src/ffi.manager.pp

+ 3 - 1
packages/libffi/src/ffi.manager.pp

@@ -76,8 +76,10 @@ begin
   SetLength(elements, td^.TotalFieldCount);
   SetLength(elements, td^.TotalFieldCount);
   for i := 0 to td^.TotalFieldCount - 1 do begin
   for i := 0 to td^.TotalFieldCount - 1 do begin
     { ToDo: what about fields that are larger that what we have currently? }
     { ToDo: what about fields that are larger that what we have currently? }
-    if field^.FldOffset < curoffset then
+    if field^.FldOffset < curoffset then begin
+      Inc(field);
       Continue;
       Continue;
+    end;
     remoffset := field^.FldOffset - curoffset;
     remoffset := field^.FldOffset - curoffset;
     { insert padding elements }
     { insert padding elements }
     while remoffset >= SizeOf(QWord) do begin
     while remoffset >= SizeOf(QWord) do begin