ホーム > perl > Encode::JP::Mobile::Vodafone関連の不具合の修正パッチ

Encode::JP::Mobile::Vodafone関連の不具合の修正パッチ

  • 投稿者: chiba
  • 2007/6/10 日曜日 20:05:46
  • perl

今日書いたばかりの
Encode::JP::Mobileにvodafoneの絵文字相互変換させるパッチ達
に早速不具合発見。
aliasの張り方を間違って(define_aliasが反対だった)shift_jis-softbank-privateが使えてなかったです。
そのパッチがこれ。

diff -ruN Encode-JP-Mobile-0.05.org/lib/Encode/JP/Mobile.pm Encode-JP-Mobile-0.05/lib/Encode/JP/Mobile.pm
--- Encode-JP-Mobile-0.05.org/lib/Encode/JP/Mobile.pm   2007-06-10 19:53:57.000000000 +0900
+++ Encode-JP-Mobile-0.05/lib/Encode/JP/Mobile.pm       2007-06-10 19:49:52.000000000 +0900
@@ -9,7 +9,7 @@
 define_alias('shift_jis-docomo' => 'shift_jis-imode');
 define_alias('shift_jis-ezweb' => 'shift_jis-kddi');
 define_alias('shift_jis-airh' => 'shift_jis-airedge');
-define_alias('shift_jis-vodafone-private' => 'shift_jis-softbank-private');
+define_alias('shift_jis-softbank-private' => 'shift_jis-vodafone-private');

 use Encode::JP::Mobile::Vodafone;

で、もひとつ。これは自分の修正とは関係ない部分なんですが、Encode::JP::Mobile::Vodafone::_encode_vodafoneのビット演算に
誤りがあって、$highが必ず0xE000になってページ1の絵文字に集約されてしまうというバグが。
というわけで下記が修正パッチです。

diff -ruN Encode-JP-Mobile-0.05.org/lib/Encode/JP/Mobile/Vodafone.pm Encode-JP-Mobile-0.05/lib/Encode/JP/Mobile/Vodafone.pm
--- Encode-JP-Mobile-0.05.org/lib/Encode/JP/Mobile/Vodafone.pm	2007-06-10 19:53:57.000000000 +0900
+++ Encode-JP-Mobile-0.05/lib/Encode/JP/Mobile/Vodafone.pm	2007-06-10 19:45:35.000000000 +0900
@@ -47,7 +47,7 @@
     my $res = "x1bx24";
     my $buf = '';
     for my $str (@str) {
-        my $high = ord($str) & 0xF000;
+        my $high = ord($str) & 0xEF00;
         my $low  = ord($str) & 0x00FF;
         if ($buf ne $high) {
             $res .= $HighBitToChar{$high};

で、それぞれの修正に対応したテストも書いたので(まとまっちゃってますが)それもおいておきます。

diff -ruN Encode-JP-Mobile-0.05.org/t/Mobile.t Encode-JP-Mobile-0.05/t/Mobile.t
--- Encode-JP-Mobile-0.05.org/t/Mobile.t	2007-05-16 18:46:16.000000000 +0900
+++ Encode-JP-Mobile-0.05/t/Mobile.t	2007-06-10 19:41:34.000000000 +0900
@@ -1,5 +1,5 @@
 use strict;
-use Test::More tests => 18;
+use Test::More tests => 42;

 use_ok('Encode');
 use_ok('Encode::JP::Mobile');
@@ -13,6 +13,20 @@
 test_rt("shift_jis-vodafone", "x82xb1x1bx24x47x21x22x0f", "x{3053}x{e001}x{e002}");
 test_rt("shift_jis-softbank", "x82xb1x1bx24x47x21x22x0f", "x{3053}x{e001}x{e002}");

+test_rt("shift_jis-vodafone", "x82xb1x1bx24x45x21x22x0f", "x{3053}x{e101}x{e102}");
+test_rt("shift_jis-softbank", "x82xb1x1bx24x45x21x22x0f", "x{3053}x{e101}x{e102}");
+test_rt("shift_jis-vodafone", "x82xb1x1bx24x46x21x22x0f", "x{3053}x{e201}x{e202}");
+test_rt("shift_jis-softbank", "x82xb1x1bx24x46x21x22x0f", "x{3053}x{e201}x{e202}");
+test_rt("shift_jis-vodafone", "x82xb1x1bx24x4fx21x22x0f", "x{3053}x{e301}x{e302}");
+test_rt("shift_jis-softbank", "x82xb1x1bx24x4fx21x22x0f", "x{3053}x{e301}x{e302}");
+test_rt("shift_jis-vodafone", "x82xb1x1bx24x50x21x22x0f", "x{3053}x{e401}x{e402}");
+test_rt("shift_jis-softbank", "x82xb1x1bx24x50x21x22x0f", "x{3053}x{e401}x{e402}");
+test_rt("shift_jis-vodafone", "x82xb1x1bx24x51x21x22x0f", "x{3053}x{e501}x{e502}");
+test_rt("shift_jis-softbank", "x82xb1x1bx24x51x21x22x0f", "x{3053}x{e501}x{e502}");
+
+test_rt("shift_jis-vodafone-private", "x82xb1xf9x41xf9x42", "x{3053}x{e001}x{e002}");
+test_rt("shift_jis-softbank-private", "x82xb1xf9x41xf9x42", "x{3053}x{e001}x{e002}");
+
 sub test_rt {
     my ( $enc, $byte, $uni ) = @_;
     is esc( decode( $enc, $byte ) ), esc($uni), "decode $enc";

一応これはmiyagawaさんにメールしておこうかな。
というかバグ報告なんてわざわざ自分のblogに載せるもんじゃない気がしてきたorz
まぁ今回はvodafone-private追加からの流れなのでいっか…。
CPANのこことかは使われてるもんなのかなぁ。

はてなブックマーク - Encode::JP::Mobile::Vodafone関連の不具合の修正パッチ

コメント:0

コメントフォーム
入力した情報を記憶する

トラックバック:0

この記事のトラックバック URL
https://blog.everqueue.com/chiba/2007/06/10/11/trackback/
トラックバックの送信元リスト
Encode::JP::Mobile::Vodafone関連の不具合の修正パッチ - へぼい日記 より

ホーム > perl > Encode::JP::Mobile::Vodafone関連の不具合の修正パッチ

検索
フィード
メタ情報

ページの上部に戻る