在Swig生成的Go代码中获取空指针derefence

时间:2015-07-30 15:27:19

标签: c pointers go swig

假设TYPE1,TYPE2,TYPE3为typedefsstructs,我在C中有一个函数,如下所示:

int dostuff(TYPE1 *arg1, TYPE2 *arg2, TYPE3 *arg3);

该函数检查空指针并正确处理它们。

我使用Swig将其包装在Go中,结果如下:

func Dostuff(arg1 TYPE1, arg2 TYPE2, arg3 TYPE3) {
    _swig_i_0 := arg1.Swigcptr()
    _swig_i_1 := arg2.Swigcptr()
    _swig_i_2 := arg3.Swigcptr()
    ...
}

如果我传递任何参数的nil,我得到:

panic: runtime error: invalid memory address or nil pointer dereference

并且堆栈跟踪明确指向argx.Swigcptr()行作为违规者。我很困惑,因为从Swig文档中,它应该允许空指针作为参数,并简单地将它们传递给它们,留下检查底层库代码(这就是我想要的)。我做的事情显然不正确吗?

我正在使用Swig 3.0.6并在Ubuntu上使用1.4.2。

0 个答案:

没有答案