diff -urN tiarra-20030928/ChangeLog tiarra-20031012/ChangeLog --- tiarra-20030928/ChangeLog 2003-10-12 08:55:04.000000000 +0900 +++ tiarra-20031012/ChangeLog 2003-10-12 21:16:23.000000000 +0900 @@ -1,3 +1,8 @@ +2003-10-12 phonohawk + + * main/IRCMessage.pm (serialize): + 最後のパラメータがコロンを含んでいる時に、間違った文字列化をする問題を解決。 + 2003-09-28 phonohawk * tiarra-conf.el: @@ -942,7 +947,7 @@ * これ以前のログは書いていません。 -# Id: $Id: ChangeLog,v 1.105 2003/09/28 05:15:22 admin Exp $ +# Id: $Id: ChangeLog,v 1.106 2003/10/12 12:08:57 admin Exp $ # Author: $Author: admin $ -# Date: $Date: 2003/09/28 05:15:22 $ -# Revision: $Revision: 1.105 $ +# Date: $Date: 2003/10/12 12:08:57 $ +# Revision: $Revision: 1.106 $ diff -urN tiarra-20030928/main/IRCMessage.pm tiarra-20031012/main/IRCMessage.pm --- tiarra-20030928/main/IRCMessage.pm 2003-10-12 08:55:05.000000000 +0900 +++ tiarra-20031012/main/IRCMessage.pm 2003-10-12 21:16:24.000000000 +0900 @@ -1,5 +1,5 @@ # ----------------------------------------------------------------------------- -# $Id: IRCMessage.pm,v 1.13 2003/09/20 11:06:20 admin Exp $ +# $Id: IRCMessage.pm,v 1.14 2003/10/12 12:08:57 admin Exp $ # ----------------------------------------------------------------------------- # IRCMessageはIRCのメッセージを表わすクラスです。実際のメッセージはUTF-8で保持します。 # 生のメッセージのパース、シリアライズ、そしてメッセージの生成をサポートします。 @@ -240,9 +240,15 @@ for (my $i = 0;$i < $n_params;$i++) { if ($i == $n_params - 1) { # 最後のパラメタなら頭にコロンを付けて後にはスペースを置かない。 - # 但し半角スペースが一つも無ければコロンを付けない。 + # 但し半角スペースが一つも無く、且つコロンで始まっていなければコロンを付けない。 my $arg = $unicode->set($this->[PARAMS]->[$i])->conv($encoding); - $result .= (index($arg,' ') != -1 ? ':' : '').$arg; + if (index($arg, ' ') == -1 and + index($arg, ':') != 0) { + $result .= $arg; + } + else { + $result .= ":$arg"; + } # 本当はCTCPメッセージを外してエンコードすべきかも知れない。 } else {