forked from rpms/plymouth
36 lines
1.2 KiB
Diff
36 lines
1.2 KiB
Diff
diff --git a/src/libply/ply-terminal-session.c b/src/libply/ply-terminal-session.c
|
|
index 82e0c00..2a4ca8d 100644
|
|
--- a/src/libply/ply-terminal-session.c
|
|
+++ b/src/libply/ply-terminal-session.c
|
|
@@ -56,6 +56,7 @@ struct _ply_terminal_session
|
|
|
|
uint32_t is_running : 1;
|
|
uint32_t console_is_redirected : 1;
|
|
+ uint32_t created_terminal_device : 1;
|
|
};
|
|
|
|
static bool ply_terminal_session_open_console (ply_terminal_session_t *session);
|
|
@@ -325,6 +326,8 @@ ply_terminal_session_attach (ply_terminal_session_t *session,
|
|
ply_trace ("could not create pseudo-terminal: %m");
|
|
return false;
|
|
}
|
|
+
|
|
+ session->created_terminal_device = true;
|
|
}
|
|
|
|
if (should_redirect_console)
|
|
@@ -364,6 +367,13 @@ ply_terminal_session_detach (ply_terminal_session_t *session)
|
|
ply_terminal_session_unredirect_console (session);
|
|
}
|
|
|
|
+ if (session->created_terminal_device)
|
|
+ {
|
|
+ ply_trace ("ptmx wasn't originally passed in, destroying created one");
|
|
+ ply_terminal_destroy_device (session->terminal);
|
|
+ session->created_terminal_device = false;
|
|
+ }
|
|
+
|
|
session->output_handler = NULL;
|
|
session->done_handler = NULL;
|
|
session->user_data = NULL;
|