]> git.ipfire.org Git - thirdparty/plymouth.git/commitdiff
Make sure to clean up ptm when detaching
authorRay Strode <rstrode@redhat.com>
Thu, 19 Mar 2009 13:37:28 +0000 (09:37 -0400)
committerRay Strode <rstrode@redhat.com>
Thu, 19 Mar 2009 13:39:18 +0000 (09:39 -0400)
Otherwise we hit an assert next time we attach

src/libply/ply-terminal-session.c

index 82e0c00a9346a7904028286ce05c552fce647bbe..2a4ca8db0f3ac2860a57071d82e9d4a44ff835d0 100644 (file)
@@ -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;