1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-19 20:25:07 +00:00

Shell: Set subshell flag after checking for its value in parent shell

This also reverts commit 07cc7eed29, as
that attempted to fix the issue this caused (and succeeded...but it
broke something else on linux).
This commit is contained in:
Ali Mohammad Pur 2021-12-14 17:08:59 +03:30 committed by Ali Mohammad Pur
parent 4458cc249e
commit 7ac8bd44f8

View file

@ -568,12 +568,9 @@ int Shell::run_command(StringView cmd, Optional<SourcePosition> source_position_
}
tcgetattr(0, &termios);
tcsetattr(0, TCSANOW, &default_termios);
(void)command->run(*this);
tcsetattr(0, TCSANOW, &termios);
if (!has_error(ShellError::None)) {
possibly_print_error();
take_error();
@ -743,7 +740,6 @@ RefPtr<Job> Shell::run_command(const AST::Command& command)
if (child == 0) {
close(sync_pipe[1]);
m_is_subshell = true;
m_pid = getpid();
Core::EventLoop::notify_forked(Core::EventLoop::ForkEvent::Child);
TemporaryChange signal_handler_install { m_should_reinstall_signal_handlers, true };
@ -769,6 +765,8 @@ RefPtr<Job> Shell::run_command(const AST::Command& command)
if (!m_is_subshell && command.should_wait)
tcsetattr(0, TCSANOW, &default_termios);
m_is_subshell = true;
if (command.should_immediately_execute_next) {
VERIFY(command.argv.is_empty());