diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2008-05-09 19:50:37 +0000 |
---|---|---|
committer | Chris Wilson <cpwilson@src.gnome.org> | 2008-05-09 19:50:37 +0000 |
commit | a51119aca141b00564b680472d9cbb56311ec40e (patch) | |
tree | 34f5487cb6804cda956258eedc40b9b9aace9ba5 /src/vte-private.h | |
parent | ef4e36154eabf2d74bc1f48db8ef095cec02cbc5 (diff) |
Fix "GLib-CRITICAL **: g_io_add_watch_full: assertion `channel != NULL'
2008-05-09 Chris Wilson <chris@chris-wilson.co.uk>
Fix "GLib-CRITICAL **: g_io_add_watch_full: assertion
`channel != NULL' failed"
* src/debug.c (_vte_debug_parse_string):
* src/debug.h:
* src/vte-private.h:
* src/vte.c (vte_terminal_emit_adjustment_changed),
(_vte_terminal_adjust_adjustments_full),
(vte_terminal_scroll_lines), (vte_terminal_maybe_scroll_to_bottom),
(_vte_terminal_insert_char), (vte_terminal_catch_child_exited),
(mark_input_source_invalid), (_vte_terminal_connect_pty_read),
(mark_output_source_invalid), (_vte_terminal_connect_pty_write),
(_vte_terminal_disconnect_pty_read),
(_vte_terminal_disconnect_pty_write), (_vte_terminal_fork_basic),
(vte_terminal_eof), (_vte_terminal_enable_input_source),
(vte_terminal_io_read), (vte_terminal_handle_scroll),
(vte_terminal_finalize), (vte_terminal_class_init),
(vte_terminal_set_pty), (process_timeout), (update_repeat_timeout),
(update_timeout):
It was possible for _vte_terminal_enable_input_source() to be called
after the input closed with G_IO_HUP. The minimal change would just
have been to add a guard to check the pty_master was still valid
before reattaching the source. Instead I removed the redundant
duplication of the input and output channels and added lots of
debugging.
svn path=/trunk/; revision=2041
Diffstat (limited to 'src/vte-private.h')
-rw-r--r-- | src/vte-private.h | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/src/vte-private.h b/src/vte-private.h index 65c985c..ceed7ad 100644 --- a/src/vte-private.h +++ b/src/vte-private.h @@ -177,11 +177,10 @@ struct _VteTerminalPrivate { /* PTY handling data. */ const char *shell; /* shell we started */ int pty_master; /* pty master descriptor */ - GIOChannel *pty_input; /* master input watch */ + GIOChannel *pty_channel; /* master channel */ guint pty_input_source; - gboolean pty_input_active; - GIOChannel *pty_output; /* master output watch */ guint pty_output_source; + gboolean pty_input_active; GPid pty_pid; /* pid of child using pty slave */ VteReaper *pty_reaper; |