[swift-users] C API returns null but optional thinks it's set anyway

Rick Mann rmann at latencyzero.com
Fri Jul 1 02:59:10 CDT 2016


I have some Swift code (in Xcode 7.3) that's calling a C function in the GDAL library. It's declared like this:

typedef void *GDALDatasetH;
GDALDatasetH CPL_DLL CPL_STDCALL
GDALOpen( const char *pszFilename, GDALAccess eAccess ) CPL_WARN_UNUSED_RESULT;

I'm calling it with code like this:

class
MyClass
{
    func foo()
    {
        self.dataset = GDALOpen(path, GA_ReadOnly)
    }

    var dataset: GDALDatasetH?
}

But later code

    if let ds = self.dataset
    {
        print("dataset: \(ds)")
    }

outputs this to the console:

    dataset: 0x0000000000000000

This seems very broken.

-- 
Rick Mann
rmann at latencyzero.com




More information about the swift-users mailing list