瀏覽代碼

* Arrays used in CreateCIF must remain allocated while calling ffi_call.

Michaël Van Canneyt 4 周之前
父節點
當前提交
12a43c0170
共有 1 個文件被更改,包括 2 次插入1 次删除
  1. 2 1
      packages/libffi/src/ffi.manager.pp

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

@@ -657,10 +657,11 @@ begin
   end;
   end;
   CreateCIF(arginfos, argvalues, aCallConv, aResultType, aResultValue, aFlags, ffidata);
   CreateCIF(arginfos, argvalues, aCallConv, aResultType, aResultValue, aFlags, ffidata);
 
 
+  ffi_call(@ffidata.CIF, ffi_fn(aCodeAddress), ffidata.ResultValue, @ffidata.Values[0]);
+
   arginfos := Nil;
   arginfos := Nil;
   argvalues := Nil;
   argvalues := Nil;
 
 
-  ffi_call(@ffidata.CIF, ffi_fn(aCodeAddress), ffidata.ResultValue, @ffidata.Values[0]);
 
 
 {$ifdef USE_EXTENDED_AS_COMP_CURRENCY_RES}
 {$ifdef USE_EXTENDED_AS_COMP_CURRENCY_RES}
   if Assigned(ffidata.ResultTypeData) then begin
   if Assigned(ffidata.ResultTypeData) then begin