Luaから呼び出されたC関数内で、Lua呼び出しスタックをポップ/クリーンアップしたいと思います。これは可能ですか?
背景:
Cライブラリとその拡張スクリプトで同じテストフレームワークを使用したい。(Luaにはさまざまな単体テストツールが存在することを認識しています。気にしません。1つのレポートが必要です)CUnitをLuaの薄層でラップしています。CUnitは、致命的および非致命的なテストアサーションの選択肢を提供します。致命的なアサーションにより、すぐlongjmp
にテストが終了し、フレームワークランナーに戻ります。これは、最初にスタックをクリーンアップしなかった場合、LuaVMに悪い影響を与えるようです。
スタックはおそらく次のようになります。
#0. C: assert_wrapper_fcn(test, fatal)
#1. Lua: assert_fcn(bool)
#2. Lua: test_fcn()
#3. C: runner(&test_fcn)
#0と#3の間のすべてをクリーンアップしたいと思います。test_fcn()
とのメソッドシグネチャは知っていますassert_fcn(bool)
が、それだけです。