From d72da0cb39c19acbe1654c0c417808088e2d271f Mon Sep 17 00:00:00 2001 From: simon Date: Thu, 11 Jul 2013 17:24:20 +0000 Subject: [PATCH] Add some missing null checks for inst->ldisc, which were causing segfaults if a PuTTY or pterm did not close on exit and then you either typed something via input_method_commit_event or changed the line editing or echo settings. git-svn-id: svn://svn.tartarus.org/sgt/putty@9908 cda61777-01e9-0310-a592-d414129be87e --- unix/gtkwin.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/unix/gtkwin.c b/unix/gtkwin.c index eb8db568..ec5f7722 100644 --- a/unix/gtkwin.c +++ b/unix/gtkwin.c @@ -1223,7 +1223,8 @@ gint key_event(GtkWidget *widget, GdkEventKey *event, gpointer data) void input_method_commit_event(GtkIMContext *imc, gchar *str, gpointer data) { struct gui_data *inst = (struct gui_data *)data; - lpage_send(inst->ldisc, CS_UTF8, str, strlen(str), 1); + if (inst->ldisc) + lpage_send(inst->ldisc, CS_UTF8, str, strlen(str), 1); show_mouseptr(inst, 0); term_seen_key_event(inst->term); } @@ -3032,9 +3033,10 @@ void change_settings_menuitem(GtkMenuItem *item, gpointer data) * Flush the line discipline's edit buffer in the case * where local editing has just been disabled. */ - ldisc_configure(inst->ldisc, inst->conf); - if (inst->ldisc) + if (inst->ldisc) { + ldisc_configure(inst->ldisc, inst->conf); ldisc_send(inst->ldisc, NULL, 0, 0); + } /* Pass new config data to the terminal */ term_reconfig(inst->term, inst->conf); /* Pass new config data to the back end */ -- 2.11.0