diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index e8e46fe9b3..a476db186c 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -4,6 +4,10 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK. 2006/07/19 + * Fixed parse_names on irc.c crashing when receiving a null argument. + [Skotlex] + * Modified the parsing of the names line, since some servers will send @ + instead of = when separating the information. [Skotlex] * Fixed the homun creation sql statement. Why noone else did so before? [Skotlex] * When enabling/disabling hiding/unhiding an npc, if the npc is a warp, it diff --git a/src/map/irc.c b/src/map/irc.c index 4cfe1fc7cc..9d59fba689 100644 --- a/src/map/irc.c +++ b/src/map/irc.c @@ -371,12 +371,12 @@ int parse_names_packet(char *str) { memset(names,'\0',1024); tok=strtok(str,"\r\n"); - sscanf(tok,":%255s %10s %255s = %255s :%1023[^\r\n]",source,numeric,target,channel,names); + sscanf(tok,":%255s %10s %255s %*1[=@] %255s :%1023[^\r\n]",source,numeric,target,channel,names); if(strcmpi(numeric,"353")==0) parse_names(names); while((tok=strtok(NULL,"\r\n"))!=NULL) { - sscanf(tok,":%255s %10s %255s = %255s :%1023[^\r\n]",source,numeric,target,channel,names); + sscanf(tok,":%255s %10s %255s %*1[=@] %255s :%1023[^\r\n]",source,numeric,target,channel,names); if(strcmpi(numeric,"353")==0) parse_names(names); } @@ -387,7 +387,7 @@ int parse_names_packet(char *str) { //User access level prefix parser [Zido] int parse_names(char *str) { char *tok; - + if (str == NULL) return 0; //Nothing to parse! tok=strtok(str," "); switch(tok[0]) { case '~': @@ -433,7 +433,7 @@ int parse_names(char *str) { } } - return 0; + return 1; } //Store user's access level [Zido]