dougang6178 2015-07-30 15:27
浏览 57

在Swig生成的Go代码中获取空指针取消引用

Assuming TYPE1, TYPE2, TYPE3 are typedefs to structs, I have a function in C like this:

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

The function checks for null pointers and handles them correctly.

I have wrapped this in Go using Swig, resulting in the following:

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

If I pass in nil for any of the arguments, I get:

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

And the stack trace clearly points to the argx.Swigcptr() line as the offender. I am confused, because from the Swig docs, it supposedly allows null pointers as arguments and simply passes them through as such, leaving checking up to the underlying library code (which is what I want). Am I doing something obviously incorrect?

I am using Swig 3.0.6 and go 1.4.2 on Ubuntu.

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 如何在炒股软件中,爬到我想看的日k线
    • ¥15 51单片机中C语言怎么做到下面类似的功能的函数(相关搜索:c语言)
    • ¥15 seatunnel 怎么配置Elasticsearch
    • ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
    • ¥15 (标签-MATLAB|关键词-多址)
    • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
    • ¥500 52810做蓝牙接受端
    • ¥15 基于PLC的三轴机械手程序
    • ¥15 多址通信方式的抗噪声性能和系统容量对比
    • ¥15 winform的chart曲线生成时有凸起