Mozex 1.9.5 が動かない

WindowsFirefox 2.0.0.4 *1Mozex 1.9.5 が動かないので、調べてみた。
[View Page Source]を選択すると、うんともすんとも言わないだけなのだが、[Edit Textarea]を選択すると、例外が投げられるので、これを手がかりにして問題箇所を絞り込むと、mozexRunProgram() 関数の下記の場所の動作がおかしいようだ。

    scmd=cmd.match(/"(\"|.)*?"(?=\s|$)|(\\\s|\S)+/g);
    for (var i in scmd)
    {
        // If it is apos. delimited
        if (scmd[i].slice(0,1)=='"') // ←ここで例外が投げられる

この for 文がなぜか本来より多く回ってしまい、例外が投げられる。
そこで、下記のように for 文を書き換えてみた。

    scmd=cmd.match(/"(\"|.)*?"(?=\s|$)|(\\\s|\S)+/g);
    for (var i = 0; i < scmd.length; i++) // ←ここ
    {
        // If it is apos. delimited
        if (scmd[i].slice(0,1)=='"')

すると、本来の回数だけ回るようになり、mozexRunProgram() 関数が正常に動くようになった。
元々のコードでも問題ないはず*2だし、FreeBSDFirefox 2.0.0.1 *3では動くので、WindowsFirefox 2.0.0.4 のバグだろうか?

パッチ

--- mozex.js.ORG	2006-08-29 04:26:40.000000000 +0900
+++ mozex.js	2007-06-24 16:17:16.000000000 +0900
@@ -917,8 +917,8 @@
     //
     // Use debugging facility to see what is the result if you are not sure how
     // to use this
-    scmd=cmd.match(/"(\"|.)*?"(?=\s|$)|(\\\s|\S)+/g);
-    for (var i in scmd)
+    var scmd=cmd.match(/"(\"|.)*?"(?=\s|$)|(\\\s|\S)+/g);
+    for (var i = 0; i < scmd.length; i++)
     {
         // If it is apos. delimited
         if (scmd[i].slice(0,1)=='"')

*1:Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4

*2:JavaScript は、ほとんど知らないんだけど…

*3:Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.1.1) Gecko/20070129 Firefox/2.0.0.1