diff --git a/.gitignore b/.gitignore index 505f1dc..55e521c 100644 --- a/.gitignore +++ b/.gitignore @@ -28,5 +28,6 @@ xcuserdata *.ipa libirc* +NSData* *~ \ No newline at end of file diff --git a/IRCClient.xcodeproj/project.pbxproj b/IRCClient.xcodeproj/project.pbxproj index b027a47..808dea6 100644 --- a/IRCClient.xcodeproj/project.pbxproj +++ b/IRCClient.xcodeproj/project.pbxproj @@ -7,6 +7,8 @@ objects = { /* Begin PBXBuildFile section */ + 8657E6DD1C29F4C700BD4E50 /* NSData+SA_NSDataExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 8657E6DB1C29F4C700BD4E50 /* NSData+SA_NSDataExtensions.h */; }; + 8657E6DE1C29F4C700BD4E50 /* NSData+SA_NSDataExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 8657E6DC1C29F4C700BD4E50 /* NSData+SA_NSDataExtensions.m */; }; 866EF0101C25FF07006303A1 /* libircclient.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 866EF00F1C25FF07006303A1 /* libircclient.a */; }; 868374A91C24E774005B97E5 /* IRCClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 868374A81C24E774005B97E5 /* IRCClient.h */; settings = {ATTRIBUTES = (Public, ); }; }; 86B6232C1C21FD7C00D6E3AF /* README in Resources */ = {isa = PBXBuildFile; fileRef = 86B6232B1C21FD7C00D6E3AF /* README */; }; @@ -25,6 +27,8 @@ /* End PBXBuildFile section */ /* Begin PBXFileReference section */ + 8657E6DB1C29F4C700BD4E50 /* NSData+SA_NSDataExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSData+SA_NSDataExtensions.h"; sourceTree = ""; }; + 8657E6DC1C29F4C700BD4E50 /* NSData+SA_NSDataExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSData+SA_NSDataExtensions.m"; sourceTree = ""; }; 866EF00F1C25FF07006303A1 /* libircclient.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libircclient.a; sourceTree = ""; }; 868374A81C24E774005B97E5 /* IRCClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IRCClient.h; sourceTree = ""; }; 86B6232B1C21FD7C00D6E3AF /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = ""; }; @@ -56,6 +60,15 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 8657E6DA1C29F4C700BD4E50 /* NSData+SA_NSDataExtensions */ = { + isa = PBXGroup; + children = ( + 8657E6DB1C29F4C700BD4E50 /* NSData+SA_NSDataExtensions.h */, + 8657E6DC1C29F4C700BD4E50 /* NSData+SA_NSDataExtensions.m */, + ); + path = "NSData+SA_NSDataExtensions"; + sourceTree = ""; + }; 86D7849F1C24C39F00C7458D /* libircclient */ = { isa = PBXGroup; children = ( @@ -74,6 +87,7 @@ children = ( 868374A81C24E774005B97E5 /* IRCClient.h */, 86D7849F1C24C39F00C7458D /* libircclient */, + 8657E6DA1C29F4C700BD4E50 /* NSData+SA_NSDataExtensions */, 86B6232B1C21FD7C00D6E3AF /* README */, 86F2EFE81C21F73600B033A4 /* IRCClient */, 86F2EFE71C21F73600B033A4 /* Products */, @@ -116,6 +130,7 @@ 86D784A61C24C39F00C7458D /* libirc_errors.h in Headers */, 86F2EFF91C21F81900B033A4 /* IRCClientChannel.h in Headers */, 86F2EFFB1C21F81900B033A4 /* IRCClientChannelDelegate.h in Headers */, + 8657E6DD1C29F4C700BD4E50 /* NSData+SA_NSDataExtensions.h in Headers */, 86F2EFFC1C21F81900B033A4 /* IRCClientSession.h in Headers */, 86D784A71C24C39F00C7458D /* libirc_events.h in Headers */, 86D784A91C24C39F00C7458D /* libirc_rfcnumeric.h in Headers */, @@ -193,6 +208,7 @@ buildActionMask = 2147483647; files = ( 86F2EFFD1C21F81900B033A4 /* IRCClientSession.m in Sources */, + 8657E6DE1C29F4C700BD4E50 /* NSData+SA_NSDataExtensions.m in Sources */, 86F2EFFA1C21F81900B033A4 /* IRCClientChannel.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -237,7 +253,7 @@ "DEBUG=1", "$(inherited)", ); - GCC_TREAT_WARNINGS_AS_ERRORS = YES; + GCC_TREAT_WARNINGS_AS_ERRORS = NO; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES; GCC_WARN_ABOUT_MISSING_NEWLINE = YES; @@ -292,7 +308,7 @@ ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_NO_COMMON_BLOCKS = YES; - GCC_TREAT_WARNINGS_AS_ERRORS = YES; + GCC_TREAT_WARNINGS_AS_ERRORS = NO; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES; GCC_WARN_ABOUT_MISSING_NEWLINE = YES; @@ -325,7 +341,7 @@ DYLIB_CURRENT_VERSION = 2.0; DYLIB_INSTALL_NAME_BASE = "@rpath"; FRAMEWORK_VERSION = A; - GCC_TREAT_WARNINGS_AS_ERRORS = YES; + GCC_TREAT_WARNINGS_AS_ERRORS = NO; GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES; GCC_WARN_ABOUT_MISSING_NEWLINE = YES; GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES; @@ -364,7 +380,7 @@ DYLIB_CURRENT_VERSION = 2.0; DYLIB_INSTALL_NAME_BASE = "@rpath"; FRAMEWORK_VERSION = A; - GCC_TREAT_WARNINGS_AS_ERRORS = YES; + GCC_TREAT_WARNINGS_AS_ERRORS = NO; GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES; GCC_WARN_ABOUT_MISSING_NEWLINE = YES; GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES; diff --git a/IRCClient/IRCClientChannel.m b/IRCClient/IRCClientChannel.m index 73141f2..1ab070c 100644 --- a/IRCClient/IRCClientChannel.m +++ b/IRCClient/IRCClientChannel.m @@ -19,6 +19,7 @@ #import "IRCClientChannel.h" #import "IRCClientChannel_Private.h" +#import "NSData+SA_NSDataExtensions.h" /*********************************************/ #pragma mark IRCClientChannel private category @@ -93,22 +94,22 @@ - (int)part { - return irc_cmd_part(_irc_session, _name.bytes); + return irc_cmd_part(_irc_session, _name.SA_terminatedCString); } - (int)invite:(NSString *)nick { - return irc_cmd_invite(_irc_session, nick.UTF8String, _name.bytes); + return irc_cmd_invite(_irc_session, nick.UTF8String, _name.SA_terminatedCString); } - (int)refreshNames { - return irc_cmd_names(_irc_session, _name.bytes); + return irc_cmd_names(_irc_session, _name.SA_terminatedCString); } - (void)setChannelTopic:(NSString *)newTopic { - irc_cmd_topic(_irc_session, _name.bytes, [newTopic cStringUsingEncoding:_encoding]); + irc_cmd_topic(_irc_session, _name.SA_terminatedCString, [newTopic cStringUsingEncoding:_encoding]); } - (int)setMode:(NSString *)mode params:(NSString *)params @@ -118,32 +119,32 @@ if(params != nil && params.length > 0) [modeString appendFormat:@" %@", params]; - return irc_cmd_channel_mode(_irc_session, _name.bytes, modeString.UTF8String); + return irc_cmd_channel_mode(_irc_session, _name.SA_terminatedCString, modeString.UTF8String); } - (int)message:(NSString *)message { - return irc_cmd_msg(_irc_session, _name.bytes, [message cStringUsingEncoding:_encoding]); + return irc_cmd_msg(_irc_session, _name.SA_terminatedCString, [message cStringUsingEncoding:_encoding]); } - (int)action:(NSString *)action { - return irc_cmd_me(_irc_session, _name.bytes, [action cStringUsingEncoding:_encoding]); + return irc_cmd_me(_irc_session, _name.SA_terminatedCString, [action cStringUsingEncoding:_encoding]); } - (int)notice:(NSString *)notice { - return irc_cmd_notice(_irc_session, _name.bytes, [notice cStringUsingEncoding:_encoding]); + return irc_cmd_notice(_irc_session, _name.SA_terminatedCString, [notice cStringUsingEncoding:_encoding]); } - (int)kick:(NSString *)nick reason:(NSString *)reason { - return irc_cmd_kick(_irc_session, nick.UTF8String, _name.bytes, [reason cStringUsingEncoding:_encoding]); + return irc_cmd_kick(_irc_session, nick.UTF8String, _name.SA_terminatedCString, [reason cStringUsingEncoding:_encoding]); } - (int)ctcpRequest:(NSData *)request { - return irc_cmd_ctcp_request(_irc_session, _name.bytes, request.bytes); + return irc_cmd_ctcp_request(_irc_session, _name.SA_terminatedCString, request.SA_terminatedCString); } /****************************/ @@ -157,7 +158,7 @@ - (void)userParted:(NSString *)nick withReason:(NSData *)reason us:(BOOL)wasItUs { - NSString* reasonString = [[NSString alloc] initWithData:reason encoding:_encoding]; + NSString* reasonString = [NSString stringWithCString:reason.SA_terminatedCString encoding:_encoding]; [_delegate userParted:nick withReason:reasonString us:wasItUs]; } @@ -170,31 +171,31 @@ { _topic = topic; - NSString* topicString = [[NSString alloc] initWithData:_topic encoding:_encoding]; + NSString* topicString = [NSString stringWithCString:topic.SA_terminatedCString encoding:_encoding]; [_delegate topicSet:topicString by:nick]; } - (void)userKicked:(NSString *)nick withReason:(NSData *)reason by:(NSString *)byNick us:(BOOL)wasItUs { - NSString* reasonString = [[NSString alloc] initWithData:reason encoding:_encoding]; + NSString* reasonString = [NSString stringWithCString:reason.SA_terminatedCString encoding:_encoding]; [_delegate userKicked:nick withReason:reasonString by:byNick us:wasItUs]; } - (void)messageSent:(NSData *)message byUser:(NSString *)nick { - NSString* messageString = [[NSString alloc] initWithData:message encoding:_encoding]; + NSString* messageString = [NSString stringWithCString:message.SA_terminatedCString encoding:_encoding]; [_delegate messageSent:messageString byUser:nick]; } - (void)noticeSent:(NSData *)notice byUser:(NSString *)nick { - NSString* noticeString = [[NSString alloc] initWithData:notice encoding:_encoding]; + NSString* noticeString = [NSString stringWithCString:notice.SA_terminatedCString encoding:_encoding]; [_delegate noticeSent:noticeString byUser:nick]; } - (void)actionPerformed:(NSData *)action byUser:(NSString *)nick { - NSString* actionString = [[NSString alloc] initWithData:action encoding:_encoding]; + NSString* actionString = [NSString stringWithCString:action.SA_terminatedCString encoding:_encoding]; [_delegate actionPerformed:actionString byUser:nick]; } diff --git a/IRCClient/IRCClientSession.m b/IRCClient/IRCClientSession.m index 427ec07..2bba8f3 100644 --- a/IRCClient/IRCClientSession.m +++ b/IRCClient/IRCClientSession.m @@ -24,6 +24,7 @@ #import "IRCClientSession.h" #import "IRCClientChannel.h" #import "IRCClientChannel_Private.h" +#import "NSData+SA_NSDataExtensions.h" #include "string.h" #pragma mark - Callback function declarations @@ -163,7 +164,7 @@ static void onNumericEvent(irc_session_t *session, unsigned int event, const cha - (int)connect; { - return irc_connect(_irc_session, _server.UTF8String, (unsigned short) _port, (_password.length > 0 ? _password.bytes : NULL), _nickname.UTF8String, _username.UTF8String, _realname.UTF8String); + return irc_connect(_irc_session, _server.UTF8String, (unsigned short) _port, (_password.length > 0 ? _password.SA_terminatedCString : NULL), _nickname.UTF8String, _username.UTF8String, _realname.UTF8String); } - (void)disconnect @@ -195,12 +196,12 @@ static void onNumericEvent(irc_session_t *session, unsigned int event, const cha - (int)sendRaw:(NSData *)message { - return irc_send_raw(_irc_session, message.bytes); + return irc_send_raw(_irc_session, message.SA_terminatedCString); } - (int)quit:(NSData *)reason { - return irc_cmd_quit(_irc_session, reason.bytes); + return irc_cmd_quit(_irc_session, reason.SA_terminatedCString); } - (int)join:(NSData *)channel key:(NSData *)key @@ -208,14 +209,14 @@ static void onNumericEvent(irc_session_t *session, unsigned int event, const cha NSLog(@"Joining %@", channel); if (!key || !key.length > 0) - return irc_cmd_join(_irc_session, channel.bytes, NULL); + return irc_cmd_join(_irc_session, channel.SA_terminatedCString, NULL); - return irc_cmd_join(_irc_session, channel.bytes, key.bytes); + return irc_cmd_join(_irc_session, channel.SA_terminatedCString, key.SA_terminatedCString); } - (int)list:(NSData *)channel { - return irc_cmd_list(_irc_session, channel.bytes); + return irc_cmd_list(_irc_session, channel.SA_terminatedCString); } - (int)userMode:(NSString *)mode @@ -235,27 +236,27 @@ static void onNumericEvent(irc_session_t *session, unsigned int event, const cha - (int)message:(NSData *)message to:(NSString *)target { - return irc_cmd_msg(_irc_session, target.UTF8String, message.bytes); + return irc_cmd_msg(_irc_session, target.UTF8String, message.SA_terminatedCString); } - (int)action:(NSData *)action to:(NSString *)target { - return irc_cmd_me(_irc_session, target.UTF8String, action.bytes); + return irc_cmd_me(_irc_session, target.UTF8String, action.SA_terminatedCString); } - (int)notice:(NSData *)notice to:(NSString *)target { - return irc_cmd_notice(_irc_session, target.UTF8String, notice.bytes); + return irc_cmd_notice(_irc_session, target.UTF8String, notice.SA_terminatedCString); } - (int)ctcpRequest:(NSData *)request target:(NSString *)target { - return irc_cmd_ctcp_request(_irc_session, target.UTF8String, request.bytes); + return irc_cmd_ctcp_request(_irc_session, target.UTF8String, request.SA_terminatedCString); } - (int)ctcpReply:(NSData *)reply target:(NSString *)target { - return irc_cmd_ctcp_reply(_irc_session, target.UTF8String, reply.bytes); + return irc_cmd_ctcp_reply(_irc_session, target.UTF8String, reply.SA_terminatedCString); } /****************************/ @@ -286,7 +287,7 @@ static void onNumericEvent(irc_session_t *session, unsigned int event, const cha if(reason) { - reasonString = [[NSString alloc] initWithData:reason encoding:_encoding]; + reasonString = [NSString stringWithCString:reason.SA_terminatedCString encoding:_encoding]; } [_delegate userQuit:nick withReason:reasonString]; @@ -377,7 +378,7 @@ static void onNumericEvent(irc_session_t *session, unsigned int event, const cha - (void)privateMessageReceived:(NSData *)message fromUser:(NSString *)nick { - NSString* messageString = [[NSString alloc] initWithData:message encoding:_encoding]; + NSString* messageString = [NSString stringWithCString:message.SA_terminatedCString encoding:_encoding]; [_delegate privateMessageReceived:messageString fromUser:nick]; } @@ -391,7 +392,7 @@ static void onNumericEvent(irc_session_t *session, unsigned int event, const cha - (void)privateNoticeReceived:(NSData *)notice fromUser:(NSString *)nick { - NSString* noticeString = [[NSString alloc] initWithData:notice encoding:_encoding]; + NSString* noticeString = [NSString stringWithCString:notice.SA_terminatedCString encoding:_encoding]; [_delegate privateNoticeReceived:noticeString fromUser:nick]; } @@ -404,7 +405,7 @@ static void onNumericEvent(irc_session_t *session, unsigned int event, const cha - (void)CTCPRequestReceived:(NSData *)request fromUser:(NSString *)nick { const char* the_nick = getNickFromNickUserHost(nick).UTF8String; - const char* the_request = request.bytes; + const char* the_request = request.SA_terminatedCString; if (strstr(the_request, "PING") == the_request) { @@ -432,7 +433,7 @@ static void onNumericEvent(irc_session_t *session, unsigned int event, const cha char* request_type = strtok(request_string, " "); char* request_body = strtok(NULL, " " ); - [_delegate CTCPRequestReceived:[NSData dataWithBytes:request_body length:strlen(request_body)+1] ofType:[NSData dataWithBytes:request_type length:strlen(request_type)+1] fromUser:nick]; + [_delegate CTCPRequestReceived:[NSData dataWithBytes:request_body length:strlen(request_body) + 1] ofType:[NSData dataWithBytes:request_type length:strlen(request_type) + 1] fromUser:nick]; free(request_string); } @@ -456,7 +457,7 @@ static void onNumericEvent(irc_session_t *session, unsigned int event, const cha else { // An action in a private message - NSString* actionString = [[NSString alloc] initWithData:action encoding:_encoding]; + NSString* actionString = [NSString stringWithCString:action.SA_terminatedCString encoding:_encoding]; [_delegate privateCTCPActionReceived:actionString fromUser:nick]; } } @@ -565,7 +566,7 @@ static void onQuit(irc_session_t *session, const char *event, const char *origin NSData *reason = nil; if(count > 0) { - reason = [[NSData alloc] initWithBytes:params[0] length:strlen(params[0])]; + reason = [[NSData alloc] initWithBytes:params[0] length:strlen(params[0]) + 1]; } [clientSession userQuit:nick withReason:reason]; @@ -608,7 +609,7 @@ static void onPartChannel(irc_session_t *session, const char *event, const char if (count > 1) { - reason = [NSData dataWithBytes:params[1] length:strlen(params[1])+1]; + reason = [NSData dataWithBytes:params[1] length:strlen(params[1])]; } [clientSession userParted:nick channel:channelName withReason:reason]; @@ -678,7 +679,7 @@ static void onTopic(irc_session_t *session, const char *event, const char *origi if (count > 1) { - topic = [NSData dataWithBytes:params[1] length:strlen(params[1])]; + topic = [NSData dataWithBytes:params[1] length:strlen(params[1]) + 1]; } [clientSession topicSet:topic forChannel:channelName by:nick]; @@ -698,7 +699,7 @@ static void onKick(irc_session_t *session, const char *event, const char *origin { IRCClientSession *clientSession = (__bridge IRCClientSession *) irc_get_ctx(session); NSString *byNick = @(origin); - NSData *channelName = [NSData dataWithBytes:params[0] length:strlen(params[0])]; + NSData *channelName = [NSData dataWithBytes:params[0] length:strlen(params[0]) + 1]; NSString *nick = nil; NSData *reason = nil; @@ -709,7 +710,7 @@ static void onKick(irc_session_t *session, const char *event, const char *origin if (count > 2) { - reason = [NSData dataWithBytes:params[2] length:strlen(params[2])]; + reason = [NSData dataWithBytes:params[2] length:strlen(params[2]) + 1]; } [clientSession userKicked:nick fromChannel:channelName by:byNick withReason:reason]; @@ -729,12 +730,12 @@ static void onChannelPrvmsg(irc_session_t *session, const char *event, const cha { 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 *message = nil; if (count > 1) { - message = [NSData dataWithBytes:params[1] length:strlen(params[1])]; + message = [NSData dataWithBytes:params[1] length:strlen(params[1]) + 1]; } [clientSession messageSent:message toChannel:channelName byUser:nick]; @@ -757,7 +758,7 @@ static void onPrivmsg(irc_session_t *session, const char *event, const char *ori if (count > 1) { - message = [NSData dataWithBytes:params[1] length:strlen(params[1])]; + message = [NSData dataWithBytes:params[1] length:strlen(params[1]) + 1]; } [clientSession privateMessageReceived:message fromUser:nick]; @@ -784,7 +785,7 @@ static void onNotice(irc_session_t *session, const char *event, const char *orig if (count > 1) { - notice = [NSData dataWithBytes:params[1] length:strlen(params[1])]; + notice = [NSData dataWithBytes:params[1] length:strlen(params[1]) + 1]; } [clientSession privateNoticeReceived:notice fromUser:nick]; @@ -807,12 +808,12 @@ static void onChannelNotice(irc_session_t *session, const char *event, const cha { 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 *notice = nil; if (count > 1) { - notice = [NSData dataWithBytes:params[1] length:strlen(params[1])]; + notice = [NSData dataWithBytes:params[1] length:strlen(params[1]) + 1]; } [clientSession noticeSent:notice toChannel:channelName byUser:nick]; @@ -833,7 +834,7 @@ static void onInvite(irc_session_t *session, const char *event, const char *orig { IRCClientSession *clientSession = (__bridge IRCClientSession *) irc_get_ctx(session); NSString *nick = @(origin); - NSData *channelName = [NSData dataWithBytes:params[1] length:strlen(params[1])]; + NSData *channelName = [NSData dataWithBytes:params[1] length:strlen(params[1]) + 1]; [clientSession invitedToChannel:channelName by:nick]; } @@ -857,7 +858,7 @@ static void onCtcpRequest(irc_session_t *session, const char *event, const char { IRCClientSession *clientSession = (__bridge IRCClientSession *) irc_get_ctx(session); NSString *nick = @(origin); - NSData* request = [NSData dataWithBytes:params[0] length:strlen(params[0])]; + NSData* request = [NSData dataWithBytes:params[0] length:strlen(params[0]) + 1]; [clientSession CTCPRequestReceived:request fromUser:nick]; } @@ -873,7 +874,7 @@ static void onCtcpReply(irc_session_t *session, const char *event, const char *o IRCClientSession *clientSession = (__bridge IRCClientSession *) irc_get_ctx(session); NSString *nick = @(origin); - NSData *reply = [NSData dataWithBytes:params[0] length:strlen(params[0])]; + NSData *reply = [NSData dataWithBytes:params[0] length:strlen(params[0]) + 1]; [clientSession CTCPReplyReceived:reply fromUser:nick]; } @@ -894,8 +895,8 @@ static void onCtcpAction(irc_session_t *session, const char *event, const char * IRCClientSession *clientSession = (__bridge IRCClientSession *) irc_get_ctx(session); NSString *nick = @(origin); - NSData *target = [NSData dataWithBytes:params[0] length:strlen(params[0])]; - NSData *action = [NSData dataWithBytes:params[1] length:strlen(params[1])]; + NSData *target = [NSData dataWithBytes:params[0] length:strlen(params[0]) + 1]; + NSData *action = [NSData dataWithBytes:params[1] length:strlen(params[1]) + 1]; [clientSession CTCPActionPerformed:action byUser:nick atTarget:target]; } @@ -908,7 +909,7 @@ static void onCtcpAction(irc_session_t *session, const char *event, const char * static void onUnknownEvent(irc_session_t *session, const char *event, const char *origin, const char **params, unsigned int count) { IRCClientSession *clientSession = (__bridge IRCClientSession *) irc_get_ctx(session); - NSData *eventString = [NSData dataWithBytes:event length:strlen(event)]; + NSData *eventString = [NSData dataWithBytes:event length:strlen(event) + 1]; NSString *sender = nil; if (origin != NULL) @@ -917,7 +918,7 @@ static void onUnknownEvent(irc_session_t *session, const char *event, const char NSMutableArray *paramsArray = [[NSMutableArray alloc] init]; for (unsigned int i = 0; i < count; i++) - [paramsArray addObject:[NSData dataWithBytes:params[i] length:strlen(params[i])]]; + [paramsArray addObject:[NSData dataWithBytes:params[i] length:strlen(params[i]) + 1]]; [clientSession unknownEventReceived:eventString from:sender params:[paramsArray copy]]; } @@ -938,7 +939,7 @@ static void onNumericEvent(irc_session_t * session, unsigned int event, const ch NSMutableArray *paramsArray = [[NSMutableArray alloc] init]; for (unsigned int i = 0; i < count; i++) - [paramsArray addObject:[NSData dataWithBytes:params[i] length:strlen(params[i])]]; + [paramsArray addObject:[NSData dataWithBytes:params[i] length:strlen(params[i]) + 1]]; [clientSession numericEventReceived:eventNumber from:sender params:[paramsArray copy]]; }