summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2017-07-23 17:22:35 +0200
committerBram Moolenaar <Bram@vim.org>2017-07-23 17:22:35 +0200
commitcdeae99b4ef4d359e4388a72c6d35f9343ce578a (patch)
tree7a925b3f8a8961e9685e957220a3f70f52de3de2
parent9c5589c7cef9bacc41e2c359f60c53ed67c010de (diff)
downloadvim-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.c18
-rw-r--r--src/version.c2
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,