Mozex 1.9.5 が動かない
Windows 版 Firefox 2.0.0.4 *1で Mozex 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だし、FreeBSD 版 Firefox 2.0.0.1 *3では動くので、Windows 版 Firefox 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)=='"')