Skip to content

Commit

Permalink
linux differs from osx
Browse files Browse the repository at this point in the history
  • Loading branch information
loganwright committed Jul 1, 2016
1 parent 624ce09 commit 5212fc9
Showing 1 changed file with 12 additions and 2 deletions.
14 changes: 12 additions & 2 deletions Sources/Strand.swift
Original file line number Diff line number Diff line change
Expand Up @@ -40,13 +40,23 @@ public class Strand {
public init(closure: () -> Void) throws {
let holder = Unmanaged.passRetained(StrandClosure(closure: closure))

let runner: @convention(c) (UnsafeMutablePointer<Void>) -> UnsafeMutablePointer<Void>? = { arg in
#if os(Linux)
let runner: @convention(c) (UnsafeMutablePointer<Void>?) -> UnsafeMutablePointer<Void>? = { arg in
guard let arg = arg else { return nil }
let unmanaged = Unmanaged<StrandClosure>.fromOpaque(arg)
unmanaged.takeUnretainedValue().closure()
unmanaged.release()
return nil
}

#else
let runner: @convention(c) (UnsafeMutablePointer<Void>) -> UnsafeMutablePointer<Void>? = { arg in
let unmanaged = Unmanaged<StrandClosure>.fromOpaque(arg)
unmanaged.takeUnretainedValue().closure()
unmanaged.release()
return nil
}
#endif

#if swift(>=3.0)
let pointer = UnsafeMutablePointer<Void>(holder.toOpaque())
#if os(Linux)
Expand Down

0 comments on commit 5212fc9

Please sign in to comment.