diff options
author | Bram Moolenaar <Bram@vim.org> | 2017-07-23 17:22:35 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2017-07-23 17:22:35 +0200 |
commit | cdeae99b4ef4d359e4388a72c6d35f9343ce578a (patch) | |
tree | 7a925b3f8a8961e9685e957220a3f70f52de3de2 | |
parent | 9c5589c7cef9bacc41e2c359f60c53ed67c010de (diff) | |
download | vim-git-cdeae99b4ef4d359e4388a72c6d35f9343ce578a.tar.gz |
patch 8.0.0758: possible crash when using a terminal windowv8.0.0758
Problem: Possible crash when using a terminal window.
Solution: Check for NULL pointers. (Yasuhiro Matsumoto, closes #1864)
-rw-r--r-- | src/terminal.c | 18 | ||||
-rw-r--r-- | src/version.c | 2 |
2 files changed, 16 insertions, 4 deletions
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 @@ -770,6 +770,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 758, +/**/ 757, /**/ 756, |