From 4c054e9fb23027b55a09ee647a3a2c91936aeb1b Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sun, 10 Nov 2019 00:13:50 +0100 Subject: patch 8.1.2282: crash when passing many arguments through a partial Problem: Crash when passing many arguments through a partial. (Andy Massimino) Solution: Check the number of arguments. (closes #5186) --- src/regexp.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'src/regexp.c') diff --git a/src/regexp.c b/src/regexp.c index 42f34c2f9..7fe891d31 100644 --- a/src/regexp.c +++ b/src/regexp.c @@ -2015,12 +2015,18 @@ vim_regsub_both( call_func(s, -1, &rettv, 1, argv, &funcexe); } if (matchList.sl_list.lv_len > 0) - /* fill_submatch_list() was called */ + // fill_submatch_list() was called clear_submatch_list(&matchList); - eval_result = tv_get_string_buf_chk(&rettv, buf); - if (eval_result != NULL) - eval_result = vim_strsave(eval_result); + if (rettv.v_type == VAR_UNKNOWN) + // something failed, no need to report another error + eval_result = NULL; + else + { + eval_result = tv_get_string_buf_chk(&rettv, buf); + if (eval_result != NULL) + eval_result = vim_strsave(eval_result); + } clear_tv(&rettv); } else -- cgit v1.2.1