scope вынесен в начало конструктора, т.к. при падении необходимо корректно восстановить работу терминала

This commit is contained in:
Alexander Zhirov 2026-01-05 15:30:37 +03:00
parent 2dc4b7a4e5
commit a0b0f4c651
Signed by: alexander
GPG key ID: C8D8BE544A27C511

View file

@ -175,19 +175,21 @@ private:
public: public:
this(const SessionConfig config) this(const SessionConfig config)
{ {
// Если на этапе инициализации сработает проблема с конфигурированием сессии
scope (failure)
{
if (cursesInitialized()) {
endwin();
gInitialized = false;
}
}
// ncurses не должен быть инициализирован (false) // ncurses не должен быть инициализирован (false)
ncuiExpectMsg!cursesInitialized("ncurses is already initialized", false); ncuiExpectMsg!cursesInitialized("ncurses is already initialized", false);
// Корректное чтение юникода. // Корректное чтение юникода.
setlocale(LC_ALL, ""); setlocale(LC_ALL, "");
_root = NCWin(ncuiNotNull!initscr()); _root = NCWin(ncuiNotNull!initscr());
// Если на этапе инициализации сработает проблема с конфигурированием сессии
scope (failure)
{
endwin();
gInitialized = false;
}
// Установить флаг инициализации ncurses // Установить флаг инициализации ncurses
gInitialized = true; gInitialized = true;
// Применение конфигурации // Применение конфигурации