--- nono/lib/mainapp.cpp 2026/04/29 17:04:48 1.1.1.6 +++ nono/lib/mainapp.cpp 2026/04/29 17:04:51 1.1.1.7 @@ -65,13 +65,14 @@ static struct option longopts[] = { { NULL, 0, NULL, 0 }, }; -// 起動時の処理、VM の実行開始前まで。 +// VM の初期化、ステージ1。 +// VM 作成と設定確定あたりまで。スレッド生成を伴わないもの。 // 所々 CLI と GUI で処理が違う。 // 戻り値は以下のいずれか。 // MainApp::PASS .. 実行を継続(通常パス) // EXIT_SUCCESS / EXIT_FAILURE .. この終了コードでアプリケーションを終了 int -MainApp::Init(bool is_cli_, int ac, char *av[]) +MainApp::Init1(bool is_cli_, int ac, char *av[]) { is_cli = is_cli_; @@ -149,6 +150,7 @@ MainApp::Init(bool is_cli_, int ac, char // 動的なコンストラクション if (!gVM->Create()) { + gVM.reset(); return EXIT_FAILURE; } @@ -158,24 +160,26 @@ MainApp::Init(bool is_cli_, int ac, char gConfig->Fix(); if (show_config) { gConfig->Show(show_config - 1); + gVM.reset(); return EXIT_SUCCESS; } // ログレベルを設定。コンストラクト後すぐに行う。 // -L help もここで処理。 if (!ParseLogopt()) { + gVM.reset(); return EXIT_FAILURE; } return PASS; } -// VM の実行部分。 -// Init() で引数を受け付けてから Start() でデバッガスレッドなどを起動するが、 +// VM の初期化、ステージ2。スレッド生成を伴う。 +// Init1() で引数を受け付けてから Init2() でデバッガスレッドなどを起動するが、 // -Mhelp とかが指定された場合はここでスレッド開始する前にプロセスを終了する -// 必要があるので、分けてある。 +// 必要があるので分けてある。wxapp.cpp も参照。 bool -MainApp::Start() +MainApp::Init2() { // VM 初期化。 // これ以降はスレッドを開始したかもしれないので false を返す際には