diff --git a/Sources/SystemLibrary.swift b/Sources/SystemLibrary.swift index d51e046..1cb83a0 100644 --- a/Sources/SystemLibrary.swift +++ b/Sources/SystemLibrary.swift @@ -114,7 +114,7 @@ struct SystemLibrary { static func fdSet(fd: Int32, set: inout fd_set) { let intOffset = Int(fd / 32) let bitOffset = fd % 32 - let mask = Int32(1 << bitOffset) + let mask = Int32((1 << bitOffset) * (bitOffset == 31 ? -1 : 1)) switch intOffset { case 0: set.fds_bits.0 = set.fds_bits.0 | mask case 1: set.fds_bits.1 = set.fds_bits.1 | mask @@ -155,7 +155,7 @@ struct SystemLibrary { static func fdIsSet(fd: Int32, set: inout fd_set) -> Bool { let intOffset = Int(fd / 32) let bitOffset = fd % 32 - let mask = Int32(1 << bitOffset) + let mask = Int32((1 << bitOffset) * (bitOffset == 31 ? -1 : 1)) switch intOffset { case 0: return set.fds_bits.0 & mask != 0 case 1: return set.fds_bits.1 & mask != 0