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

Dan Loewenherz dan at lionheartsw.com
Fri Jul 1 07:42:46 CDT 2016


What’s the Swift type signature on GDALOpen? My guess is that it’s
returning a UnsafePointer<Void> or UnsafeMutablePointer<Void> type. Swift
doesn’t currently handle nullability for C pointers (hence the “Unsafe”
prefix). You’ll need to check the value at the pointer’s location manually.

Dan

On Fri, Jul 1, 2016 at 2:59 AM, Rick Mann via swift-users <
swift-users at swift.org> wrote:

> 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
>
>
> _______________________________________________
> swift-users mailing list
> swift-users at swift.org
> https://lists.swift.org/mailman/listinfo/swift-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20160701/56072b01/attachment.html>


More information about the swift-users mailing list