COM操作でクラッシュNo.03030
h-tom さん 09/08/09 22:22
 

h-tom です。

OS:Windows Vista SP2 (HP 32bit)
秀丸:Ver.8β5

添付のマクロを実行すると、秀丸エディタがクラッシュします。

1)マクロを実行する前に、マクロを同じフォルダに、拡張子のないファイルを作成。
2)マクロを実行 --> クラッシュする。

どうやら、拡張子のないファイルで、"GetExtensionName"を実行するタイミングで、
クラッシュしているようです。

//ファイル一覧の取得
#WshFso = createobject("Scripting.FileSystemObject");
#Folder = callmethod_returnobj(#WshFso, "GetFolder", currentmacrodirectory);
#Files  = getpropobj(#Folder,"Files");
while(1){
    #File = getcollection(#Files);
    if(#File == 0) break;
    $get_filepath = getpropstr(#File, "Path");
    $get_ext = callmethod_returnstr(#WshFso, "GetExtensionName", $get_filepath;
}
#File = getcollection(#Files, 3);
releaseobject #Files;
releaseobject #Folder;
releaseobject #WshFso;
endmacro;

[ ]
RE:03030 COM操作でクラッシュNo.03043
秀丸担当 さん 09/08/10 11:17
 

>添付のマクロを実行すると、秀丸エディタがクラッシュします。
>
>1)マクロを実行する前に、マクロを同じフォルダに、拡張子のないファイルを作成。
>2)マクロを実行 --> クラッシュする。
>
>どうやら、拡張子のないファイルで、"GetExtensionName"を実行するタイミングで、
>クラッシュしているようです。

サンプルのマクロの通りにして再現させることができました。
ありがとうございます。
調べてみたところ、正しく文字列を取得できたと返ってきているにも関わらず
VT_BSTR の bstrVal に NULL が入っているようで、これを文字列として読もうと
して落ちていました。
そういう場合でも空の文字列として扱えるように修正させていただきます。


[ ]
RE:03043 COM操作でクラッシュNo.03099
h-tom さん 09/08/13 23:42
 

h-tom です。

>サンプルのマクロの通りにして再現させることができました。
>ありがとうございます。
>調べてみたところ、正しく文字列を取得できたと返ってきているにも関わらず
>VT_BSTR の bstrVal に NULL が入っているようで、これを文字列として読もうと
>して落ちていました。
>そういう場合でも空の文字列として扱えるように修正させていただきます。
よく見たら、サンプルのマクロは、間違ってますね。(括弧が足りない)

誤:$get_ext = callmethod_returnstr(#WshFso, "GetExtensionName", $get_filepath;
正:$get_ext = callmethod_returnstr(#WshFso, "GetExtensionName", $get_filepa
th);

で、この間違ったままで実行すると、エラーメッセージが2回表示されますが、
これは意図的ですか?
---------------------------
エラー
---------------------------
test.mac(9): 括弧の対応がおかしいです
---------------------------
OK  
---------------------------

---------------------------
エラー
---------------------------
test.mac(9): 式がおかしいです
---------------------------
OK  
---------------------------

また、エラーが起きる状態で、何度か実行すると、エラー行の表示だけで、
エラーの内容が表示されない場合があります。
(括弧の対応がおかしいです、式がおかしいです、が表示されない。)

---------------------------
エラー
---------------------------
test.mac(9):
---------------------------
OK  
---------------------------

[ ]
RE:03099 COM操作でクラッシュNo.03119
秀丸担当 さん 09/08/17 12:13
 

>で、この間違ったままで実行すると、エラーメッセージが2回表示されますが、
>これは意図的ですか?

エラーメッセージは1回目で中断となるべきでした。
1回だけ出るように修正させていただきます。

[ ]