diff --git a/IRCClient/IRCClientSession.m b/IRCClient/IRCClientSession.m index 2bba8f3..da356eb 100644 --- a/IRCClient/IRCClientSession.m +++ b/IRCClient/IRCClientSession.m @@ -150,6 +150,7 @@ static void onNumericEvent(irc_session_t *session, unsigned int event, const cha _version = [NSString stringWithFormat:@"IRCClient Framework v%s (Said Achmiz) - libirc v%d.%d (George Yunaev)", IRCCLIENTVERSION, high, low]; _channels = [[NSMutableDictionary alloc] init]; + _encoding = NSUTF8StringEncoding; } return self; } @@ -585,7 +586,7 @@ static void onJoinChannel(irc_session_t *session, const char *event, const char { IRCClientSession* clientSession = (__bridge IRCClientSession *) irc_get_ctx(session); NSString *nick = @(origin); - NSData *channelName = [NSData dataWithBytes:params[0] length:strlen(params[0])]; + NSData *channelName = [NSData dataWithBytes:params[0] length:strlen(params[0]) + 1]; [clientSession userJoined:nick channel:channelName]; } @@ -604,12 +605,12 @@ static void onPartChannel(irc_session_t *session, const char *event, const char { IRCClientSession *clientSession = (__bridge IRCClientSession *) irc_get_ctx(session); NSString *nick = @(origin); - NSData *channelName = [NSData dataWithBytes:params[0] length:strlen(params[0])]; + NSData *channelName = [NSData dataWithBytes:params[0] length:strlen(params[0]) + 1]; NSData *reason = nil; if (count > 1) { - reason = [NSData dataWithBytes:params[1] length:strlen(params[1])]; + reason = [NSData dataWithBytes:params[1] length:strlen(params[1]) + 1]; } [clientSession userParted:nick channel:channelName withReason:reason]; @@ -632,7 +633,7 @@ static void onMode(irc_session_t *session, const char *event, const char *origin { IRCClientSession *clientSession = (__bridge IRCClientSession *) irc_get_ctx(session); NSString *nick = @(origin); - NSData *channelName = [NSData dataWithBytes:params[0] length:strlen(params[0])]; + NSData *channelName = [NSData dataWithBytes:params[0] length:strlen(params[0]) + 1]; NSString *mode = @(params[1]); NSString *modeParams = nil; @@ -674,7 +675,7 @@ static void onTopic(irc_session_t *session, const char *event, const char *origi { IRCClientSession *clientSession = (__bridge IRCClientSession *) irc_get_ctx(session); NSString *nick = @(origin); - NSData *channelName = [NSData dataWithBytes:params[0] length:strlen(params[0])]; + NSData *channelName = [NSData dataWithBytes:params[0] length:strlen(params[0]) + 1]; NSData *topic = nil; if (count > 1) diff --git a/NSData+SA_NSDataExtensions/NSData+SA_NSDataExtensions.m b/NSData+SA_NSDataExtensions/NSData+SA_NSDataExtensions.m index c1e8477..dadd0ab 100644 --- a/NSData+SA_NSDataExtensions/NSData+SA_NSDataExtensions.m +++ b/NSData+SA_NSDataExtensions/NSData+SA_NSDataExtensions.m @@ -1,5 +1,5 @@ // -// NSData+SA_NSDataExtensions.h +// NSData+SA_NSDataExtensions.m // // Copyright (c) 2015 Said Achmiz. // @@ -51,7 +51,7 @@ [self getBytes:terminated_string_buffer length:self.length]; terminated_string_buffer[self.length] = '\0'; - return [NSData dataWithBytesNoCopy:terminated_string_buffer length:self.length + 1 freeWhenDone:YES]; + return [NSData dataWithBytesNoCopy:terminated_string_buffer length:(self.length + 1) freeWhenDone:YES]; } } @@ -71,7 +71,7 @@ char* unterminated_string_buffer = malloc(self.length - 1); [self getBytes:unterminated_string_buffer length:self.length - 1]; - return [NSData dataWithBytesNoCopy:unterminated_string_buffer length:self.length - 1 freeWhenDone:YES]; + return [NSData dataWithBytesNoCopy:unterminated_string_buffer length:(self.length - 1) freeWhenDone:YES]; } } diff --git a/NSData+SA_NSDataExtensions/README.md b/NSData+SA_NSDataExtensions/README.md new file mode 100644 index 0000000..4276185 --- /dev/null +++ b/NSData+SA_NSDataExtensions/README.md @@ -0,0 +1,7 @@ +NSData+SA_NSDataExtensions + +Adds utility functions to NSData, that help deal with null termination of C strings. + +This category on NSData adds properties that allow you to get the null-terminated or non-null-terminated versions of byte arrays stored as NSData objects, and to easily check whether an NSData's byte array is, or is not, null-terminated (that is, whether its last byte is a null). + +Copyright (c) 2015 Said Achmiz.