Notes:(調査中)Leopard AppleScript 日本語を使った XML-RPC が不安定に

Leopard には、もちろん素晴らしいところが多々あるのですが、またイヤな情報をひとつ。Leopard 上で Kaku の動作をほとんど殺してくれている不具合について、少なくともどの辺にありそうかは分かってきました。

「不安定に」と少し曖昧に書いていますが、僕が知る限り、2つの問題が組合わさっています。

問題1. パラメータに日本語を含む XML-RPC を行うと、高い確率でクラッシュする

スクリプトエディタから実行した場合はスクリプトエディタが、AppleScript Studio アプリから実行した場合は、そのアプリがクラッシュします。

例えば、AppleScript Studio アプリから、日本語パラメータを含む XML-RPC を行うと、次のようなメッセージを残して、アプリがクラッシュします:

XMLRPC Test(10908) malloc: *** error for object 0x2d4290: incorrect checksum for freed object - object was probably modified after being freed.
*** set a breakpoint in malloc_error_break to debug

パラメータに英数字を設定していれば、何の問題もありません。日本語の文字列の扱いでトラブっているでは、と想像できます。

Leopard からは、スクリプト内に Unicode 文字を含めることが出来るようになりましたが、その辺との関連で、齟齬が起きているのかもしれません。

問題2. パラメータに日本語を含む XML-RPC が成功したとしても、WordPress で文字化けする

スクリプトエディタを使っている場合、問題1 が発生してスクリプトエディタが強制終了したあと、もう一度そのスクリプトファイルを開いて、すぐ実行すると、XML-RPC が成功する場合があります。

しかし例えば、そうやって WordPress に記事を送信したとすると、記事の内容は「?」の羅列に化けてしまいます。

問題1 が発生している時点ですでにあやしいですが、AEXMLTutor(Leopard でも動くことに感動)で送信している生の XML データを確認すると、次のようになっています(ちなみに記事の内容は「あああああ」):

<struct>
    <member>
        <name>description</name>
        <value>
            <string>&#x3042;&#x3042;&#x3042;&#x3042;&#x3042;</string>
        </value>
    </member>
</struct>

文字参照になっているのが分かります。これが文字化けの原因だと思うのですが、この辺は(…というか、よく知っていること以外はだいたい)かなりうといので、よく分かりません。

興味深いのは、これが Movable Type や P_BLOG × XML-RPC for P_BLOG (revision e) では、発生しないことです。これは、決して WordPress が悪いわけではなくて、たぶん、構図は:

  • 犯人
    • AppleScript
  • 犯行内容
    • 送信するデータがおかしい
  • 関係者
    • Moveble Type → なんとか対応
    • XML-RPC for P_BLOG (revision e) → なんとか対応
    • WordPress → 爆死

…ということなんだろうと想像しますが、WordPress の実装は、他の2つとどう違うんでしょうか…?

もしこれらに関して、新たに分かったことがあれば、ここに追記します。

しかし、少なくともこれで、XML-RPC を AppleScript に任せたままで、手っ取り早く解決する方法はなさそうだ、ということは分かりました。なんとかせねば…

Leave a Reply

Your email address will not be published. Required fields are marked *