Fix encoding issues by not implicit casting UInt8 to char. Go through CFString instead.
authorRobert Sesek <rsesek@bluestatic.org>
Sat, 20 Feb 2010 04:27:28 +0000 (23:27 -0500)
committerRobert Sesek <rsesek@bluestatic.org>
Sat, 20 Feb 2010 04:27:28 +0000 (23:27 -0500)
Source/GDBpConnection.m

index fb1243bcc360e7ba095b634dd9583ed996e10c90..329e0520168288fb2a66f46fb7a447067288785e 100644 (file)
@@ -488,8 +488,14 @@ void SocketAcceptCallback(CFSocketRef socket,
        // We haven't finished reading a packet, so just read more data in.
        if (currentPacketIndex_ < packetSize_)
        {
-               [currentPacket_ appendFormat:@"%s", buffer];
                currentPacketIndex_ += bytesRead;
+               CFStringRef bufferString = CFStringCreateWithBytes(kCFAllocatorDefault,
+                                                                                                                  buffer,
+                                                                                                                  bytesRead,
+                                                                                                                  kCFStringEncodingUTF8,
+                                                                                                                  true);
+               [self.currentPacket appendString:(NSString*)bufferString];
+               CFRelease(bufferString);
        }
        // Time to read a new packet.
        else
@@ -497,7 +503,13 @@ void SocketAcceptCallback(CFSocketRef socket,
                // Read the message header: the size.
                packetSize_ = atoi(charBuffer);
                currentPacketIndex_ = bytesRead - strlen(charBuffer);
-               self.currentPacket = [NSMutableString stringWithFormat:@"%s", buffer + strlen(charBuffer) + 1];
+               CFStringRef bufferString = CFStringCreateWithBytes(kCFAllocatorDefault,
+                                                                                                                  buffer + strlen(charBuffer) + 1,
+                                                                                                                  bytesRead - strlen(charBuffer) - 1,
+                                                                                                                  kCFStringEncodingUTF8,
+                                                                                                                  true);
+               self.currentPacket = [NSMutableString stringWithString:(NSString*)bufferString];
+               CFRelease(bufferString);
        }
        
        // We have finished reading the packet.