浏览代码

fix: 修复setArgumentToFFI中的错误

在该函数中, setFFIArgFromValue执行成功后会
接着执行setFFIArgFromType.

原因是,setFFIArgFromValue执行成功后af->arg[i]
便不是NULL, 因为或的关系导致执行了setFFIArgFromType
SongZihuan 4 年之前
父节点
当前提交
0f7dc0f008
共有 1 个文件被更改,包括 7 次插入3 次删除
  1. 7 3
      VirtulMathCore/src/parameter.c

+ 7 - 3
VirtulMathCore/src/parameter.c

@@ -1040,9 +1040,13 @@ static bool setFFIArgFromType(ArgumentFFI *af, Argument *arg, unsigned int i) {
 
 bool setArgumentToFFI(ArgumentFFI *af, Argument *arg) {
     for (unsigned int i=0; arg != NULL && i < af->size; arg = arg->next, i++) {
-        if (af->arg[i] == NULL && !setFFIArgFromValue(af, arg, i) ||
-            af->arg[i] != NULL && !setFFIArgFromType(af, arg, i))
-            return false;
+        if (af->arg[i] == NULL) {
+            if (!setFFIArgFromValue(af, arg, i))
+                return false;
+        } else{
+            if (!setFFIArgFromType(af, arg, i))
+                return false;
+        }
     }
     return arg == NULL;  // 若arg还没迭代完, 则证明有问题
 }