From: Bram Moolenaar Date: Sun, 23 Jul 2017 15:22:35 +0000 (+0200) Subject: patch 8.0.0758: possible crash when using a terminal window X-Git-Tag: v8.0.0758 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=cdeae99b4ef4d359e4388a72c6d35f9343ce578a;p=vim patch 8.0.0758: possible crash when using a terminal window Problem: Possible crash when using a terminal window. Solution: Check for NULL pointers. (Yasuhiro Matsumoto, closes #1864) --- diff --git a/src/terminal.c b/src/terminal.c index 5fbfc2eea..d1ed569ea 100644 --- a/src/terminal.c +++ b/src/terminal.c @@ -1084,13 +1084,19 @@ failed: if (channel != NULL) channel_clear(channel); if (job != NULL) + { + job->jv_channel = NULL; job_cleanup(job); + } + term->tl_job = NULL; if (jo != NULL) CloseHandle(jo); if (term->tl_winpty != NULL) winpty_free(term->tl_winpty); + term->tl_winpty = NULL; if (term->tl_winpty_config != NULL) winpty_config_free(term->tl_winpty_config); + term->tl_winpty_config = NULL; if (winpty_err != NULL) { char_u *msg = utf16_to_enc( @@ -1108,9 +1114,12 @@ failed: static void term_free(term_T *term) { - winpty_free(term->tl_winpty); - winpty_config_free(term->tl_winpty_config); - vterm_free(term->tl_vterm); + if (term->tl_winpty != NULL) + winpty_free(term->tl_winpty); + if (term->tl_winpty_config != NULL) + winpty_config_free(term->tl_winpty_config); + if (term->tl_vterm != NULL) + vterm_free(term->tl_vterm); } # else @@ -1149,7 +1158,8 @@ term_and_job_init(term_T *term, int rows, int cols, char_u *cmd) static void term_free(term_T *term) { - vterm_free(term->tl_vterm); + if (term->tl_vterm != NULL) + vterm_free(term->tl_vterm); } # endif diff --git a/src/version.c b/src/version.c index ad2a45d19..bfeedcd4d 100644 --- a/src/version.c +++ b/src/version.c @@ -769,6 +769,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 758, /**/ 757, /**/