Skip to content

Commit d1a69ff

Browse files
committed
fix for windows
1 parent 5009fe9 commit d1a69ff

File tree

3 files changed

+12
-10
lines changed

3 files changed

+12
-10
lines changed

cpp-terminal/private/signals.cpp

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
#include "cpp-terminal/private/signals.hpp"
1111

12-
#include "cpp-terminal/terminal_impl.hpp"
12+
#include "cpp-terminal/terminal.hpp"
1313
#include "signals.hpp"
1414

1515
#include <algorithm>
@@ -28,14 +28,19 @@ static BOOL WINAPI consoleHandler(DWORD signal)
2828
case CTRL_C_EVENT:
2929
case CTRL_BREAK_EVENT:
3030
{
31-
Term::Private::Signals::reset_and_raise(Term::terminal);
31+
Term::Private::Signals::clean_terminal();
3232
return false;
3333
}
3434
default: return false;
3535
}
3636
}
3737
#endif
3838

39+
void Term::Private::Signals::clean_terminal() noexcept
40+
{
41+
Term::terminal.clean();
42+
}
43+
3944
const std::size_t Term::Private::Signals::m_signals_number{NSIG - 1};
4045

4146
void Term::Private::Signals::setHandler(const sighandler_t& handler) noexcept
@@ -72,10 +77,9 @@ Term::Private::Signals::Signals() noexcept
7277
}
7378
}
7479

75-
void Term::Private::Signals::reset_and_raise(Term::Terminal& term) noexcept { term.clean(); }
76-
77-
void Term::Private::Signals::reset_and_raise(int sign, Term::Terminal& term) noexcept
80+
void Term::Private::Signals::reset_and_raise(const int& sign) noexcept
7881
{
82+
clean_terminal();
7983
const static std::vector<int> termin{
8084
#if defined(SIGHUP)
8185
SIGHUP,
@@ -166,7 +170,6 @@ void Term::Private::Signals::reset_and_raise(int sign, Term::Terminal& term) noe
166170
{
167171
sighandler_t old = std::signal(sign, m_handlers[sign]);
168172
old = std::signal(sign, m_handlers[sign]);
169-
term.clean();
170173
std::raise(sign);
171174
}
172175
}

cpp-terminal/private/signals.hpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ using sighandler_t = void (*)(int);
1515

1616
namespace Term
1717
{
18-
class Terminal;
1918

2019
namespace Private
2120
{
@@ -26,8 +25,8 @@ class Signals
2625
Signals() noexcept;
2726
~Signals() noexcept = default;
2827
void setHandler(const sighandler_t& handler) noexcept;
29-
void reset_and_raise(int sign, Term::Terminal&) noexcept;
30-
static void reset_and_raise(Term::Terminal&) noexcept;
28+
void reset_and_raise(const int &sign) noexcept;
29+
static void clean_terminal() noexcept;
3130

3231
private:
3332
const static std::size_t m_signals_number;

cpp-terminal/terminal_initializer.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ try
2626
static const Private::FileInitializer files_init;
2727
new(&Term::terminal) Terminal();
2828
static Term::Private::Signals signals;
29-
sighandler_t handler = [](int signum) { signals.reset_and_raise(signum, Term::terminal); };
29+
sighandler_t handler = [](int signum) { signals.reset_and_raise(signum); };
3030
signals.setHandler(handler);
3131
}
3232
++m_counter;

0 commit comments

Comments
 (0)