MINGW32 を使用して Lua 5.2 をコンパイルすると、Lua エラーが発生したときにホスト アプリケーションをクラッシュさせる可能性があるライブラリ (lua52.dll) が作成されます。
テスト スクリプトで Lua 構文エラーを作成することで、このバグを検出しました。スクリプトにエラーがまったくない場合、ホスト プログラムはスクリプトを正常に実行しました。ただし、無効なスクリプト (IF ブロックに THEN がない場合など) をロードすると、ホスト プログラムがクラッシュしました。
ここに私のコードの断片があります:
//Load the script
int status = luaL_loadfile(L, "foo.lua");
if (status == 0) {
//Run the script
....
} else {
warn("LUA script error: %d. %s", status, lua_tostring(L, -1));
lua_pop(L, 1);
}
スクリプトに構文エラーがない場合status
は 0 であり、スクリプトは正常に実行されています。それ以外の場合、luaL_loadfile
返されず、プログラムがクラッシュします。