fix EXE_BAD_ACCESS when compiling with -O with swift 1.1
This commit is contained in:
parent
2e80b9405d
commit
2205cfb7d9
@ -24,6 +24,10 @@
|
|||||||
|
|
||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
|
// This is used because in Swift 1.1, turning on -O causes a
|
||||||
|
// memory access violation in SocketEngine#parseEngineMessage
|
||||||
|
private var fixSwift:AnyObject?
|
||||||
|
|
||||||
extension String {
|
extension String {
|
||||||
private var length:Int {
|
private var length:Int {
|
||||||
return Array(self).count
|
return Array(self).count
|
||||||
@ -194,7 +198,6 @@ class SocketEngine: NSObject, SRWebSocketDelegate {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
NSLog("Error handshaking")
|
NSLog("Error handshaking")
|
||||||
return
|
return
|
||||||
@ -220,7 +223,7 @@ class SocketEngine: NSObject, SRWebSocketDelegate {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Translatation of engine.io-parser#decodePayload
|
// Translatation of engine.io-parser#decodePayload
|
||||||
func parsePollingMessage(str:String) {
|
private func parsePollingMessage(str:String) {
|
||||||
if str.length == 1 {
|
if str.length == 1 {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -263,7 +266,8 @@ class SocketEngine: NSObject, SRWebSocketDelegate {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if msg.length != 0 {
|
if msg.length != 0 {
|
||||||
self.parseEngineMessage(msg)
|
fixSwift = msg
|
||||||
|
self.parseEngineMessage(fixSwift)
|
||||||
}
|
}
|
||||||
|
|
||||||
i += n
|
i += n
|
||||||
@ -272,7 +276,7 @@ class SocketEngine: NSObject, SRWebSocketDelegate {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func parseEngineMessage(message:AnyObject?) {
|
private func parseEngineMessage(message:AnyObject?) {
|
||||||
// println(message)
|
// println(message)
|
||||||
|
|
||||||
if let data = message as? NSData {
|
if let data = message as? NSData {
|
||||||
@ -281,8 +285,8 @@ class SocketEngine: NSObject, SRWebSocketDelegate {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
var message = message as String
|
var messageString = message as String
|
||||||
var strMessage = RegexMutable(message)
|
var strMessage = RegexMutable(messageString)
|
||||||
|
|
||||||
// We should upgrade
|
// We should upgrade
|
||||||
if strMessage == "3probe" {
|
if strMessage == "3probe" {
|
||||||
@ -294,12 +298,12 @@ class SocketEngine: NSObject, SRWebSocketDelegate {
|
|||||||
|
|
||||||
if type != PacketType.MESSAGE.rawValue {
|
if type != PacketType.MESSAGE.rawValue {
|
||||||
// TODO Handle other packets
|
// TODO Handle other packets
|
||||||
if message.hasPrefix("b4") {
|
if messageString.hasPrefix("b4") {
|
||||||
// binary in base64 string
|
// binary in base64 string
|
||||||
message.removeRange(Range<String.Index>(start: message.startIndex,
|
messageString.removeRange(Range<String.Index>(start: messageString.startIndex,
|
||||||
end: advance(message.startIndex, 2)))
|
end: advance(messageString.startIndex, 2)))
|
||||||
|
|
||||||
if let data = NSData(base64EncodedString: message,
|
if let data = NSData(base64EncodedString: messageString,
|
||||||
options: NSDataBase64DecodingOptions.IgnoreUnknownCharacters) {
|
options: NSDataBase64DecodingOptions.IgnoreUnknownCharacters) {
|
||||||
self.client.parseSocketMessage(data)
|
self.client.parseSocketMessage(data)
|
||||||
}
|
}
|
||||||
@ -308,13 +312,12 @@ class SocketEngine: NSObject, SRWebSocketDelegate {
|
|||||||
}
|
}
|
||||||
|
|
||||||
println("Got something idk what to do with")
|
println("Got something idk what to do with")
|
||||||
println(message)
|
println(messageString)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Remove message type
|
// Remove message type
|
||||||
message.removeAtIndex(message.startIndex)
|
messageString.removeAtIndex(messageString.startIndex)
|
||||||
self.client.parseSocketMessage(message)
|
self.client.parseSocketMessage(messageString)
|
||||||
}
|
}
|
||||||
|
|
||||||
func probeWebSocket() {
|
func probeWebSocket() {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user