mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +00:00 
			
		
		
		
	vim-patch:8.2.1945: crash when passing NULL function to reduce()
Problem:    Crash when passing NULL function to reduce().
Solution:   Check for NULL pointer and give an error. (Dominique Pellé,
            closes vim/vim#7243)
0d90e728fe
Co-authored-by: Bram Moolenaar <Bram@vim.org>
			
			
This commit is contained in:
		| @@ -150,6 +150,8 @@ static const char *e_invalwindow = N_("E957: Invalid window number"); | |||||||
| static const char *e_reduceempty = N_("E998: Reduce of an empty %s with no initial value"); | static const char *e_reduceempty = N_("E998: Reduce of an empty %s with no initial value"); | ||||||
| static const char e_using_number_as_bool_nr[] | static const char e_using_number_as_bool_nr[] | ||||||
|   = N_("E1023: Using a Number as a Bool: %d"); |   = N_("E1023: Using a Number as a Bool: %d"); | ||||||
|  | static const char e_missing_function_argument[] | ||||||
|  |   = N_("E1132: Missing function argument"); | ||||||
|  |  | ||||||
| /// Dummy va_list for passing to vim_snprintf | /// Dummy va_list for passing to vim_snprintf | ||||||
| /// | /// | ||||||
| @@ -6244,8 +6246,9 @@ static void f_reduce(typval_T *argvars, typval_T *rettv, EvalFuncData fptr) | |||||||
|   } else { |   } else { | ||||||
|     func_name = tv_get_string(&argvars[1]); |     func_name = tv_get_string(&argvars[1]); | ||||||
|   } |   } | ||||||
|   if (*func_name == NUL) { |   if (func_name == NULL || *func_name == NUL) { | ||||||
|     return;  // type error or empty name |     emsg(_(e_missing_function_argument)); | ||||||
|  |     return; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   funcexe_T funcexe = FUNCEXE_INIT; |   funcexe_T funcexe = FUNCEXE_INIT; | ||||||
|   | |||||||
| @@ -747,6 +747,10 @@ func Test_reduce() | |||||||
|  |  | ||||||
|   call assert_equal(42, reduce(v:_null_list, function('add'), 42)) |   call assert_equal(42, reduce(v:_null_list, function('add'), 42)) | ||||||
|   call assert_equal(42, reduce(v:_null_blob, function('add'), 42)) |   call assert_equal(42, reduce(v:_null_blob, function('add'), 42)) | ||||||
|  |  | ||||||
|  |   " should not crash | ||||||
|  |   " Nvim doesn't have null functions | ||||||
|  |   " call assert_fails('echo reduce([1], test_null_function())', 'E1132:') | ||||||
| endfunc | endfunc | ||||||
|  |  | ||||||
| " splitting a string to a List using split() | " splitting a string to a List using split() | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 zeertzjq
					zeertzjq