Mercurial > vim
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; |