comparison src/strings.c @ 32818:705d0e1329a5 v9.0.1723

patch 9.0.1723: Fix regression in {func} argument of reduce() Commit: https://github.com/vim/vim/commit/ad0c442f1fcc6fe9c433777ee3e5b9e6addc6d69 Author: zeertzjq <zeertzjq@outlook.com> Date: Thu Aug 17 22:15:47 2023 +0200 patch 9.0.1723: Fix regression in {func} argument of reduce() Problem: Fix regression in {func} argument of reduce() Solution: pass function name as string again Before patch 9.0.0548, passing a string as {func} argument of reduce() is treated as a function name, but after patch 9.0.0548 it is treated as an expression instead, which is useless as reduce() doesn't set any v: variables. This PR restores the behavior of {func} before that patch. Also correct an emsg() call, as e_string_list_or_blob_required doesn't contain format specifiers. closes: #12824 Signed-off-by: Christian Brabandt <cb@256bit.org> Co-authored-by: zeertzjq <zeertzjq@outlook.com>
author Christian Brabandt <cb@256bit.org>
date Thu, 17 Aug 2023 22:30:02 +0200
parents f48e27f20e6b
children 06562c9307dd
comparison
equal deleted inserted replaced
32817:4fa5838c6952 32818:705d0e1329a5
1030 argv[0] = *rettv; 1030 argv[0] = *rettv;
1031 if (copy_first_char_to_tv(p, &argv[1]) == FAIL) 1031 if (copy_first_char_to_tv(p, &argv[1]) == FAIL)
1032 break; 1032 break;
1033 len = (int)STRLEN(argv[1].vval.v_string); 1033 len = (int)STRLEN(argv[1].vval.v_string);
1034 1034
1035 r = eval_expr_typval(expr, argv, 2, fc, rettv); 1035 r = eval_expr_typval(expr, TRUE, argv, 2, fc, rettv);
1036 1036
1037 clear_tv(&argv[0]); 1037 clear_tv(&argv[0]);
1038 clear_tv(&argv[1]); 1038 clear_tv(&argv[1]);
1039 if (r == FAIL || called_emsg != called_emsg_start) 1039 if (r == FAIL || called_emsg != called_emsg_start)
1040 return; 1040 return;