diff options
author | Bram Moolenaar <Bram@vim.org> | 2022-12-19 20:28:38 +0000 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-12-19 20:28:38 +0000 |
commit | 34820944ed101e1fbad16d552308f1486e715d27 (patch) | |
tree | 06520b05a8e83a392d72fd9d9e1b110c304dac69 /src/eval.c | |
parent | afa3f1cc7258d34c32a299a3cc6aece89f67fb47 (diff) |
patch 9.0.1081: using "->" with split lines does not always workv9.0.1081
Problem: Using "->" with split lines does not always work.
Solution: Avoid trying to get another line. (closes #11723)
Diffstat (limited to 'src/eval.c')
-rw-r--r-- | src/eval.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/src/eval.c b/src/eval.c index 934d640269..94bb4e3770 100644 --- a/src/eval.c +++ b/src/eval.c @@ -4548,11 +4548,19 @@ eval_method( if (**arg != '(' && alias == NULL && (paren = vim_strchr(*arg, '(')) != NULL) { - char_u *deref; - *arg = name; + + // Truncate the name a the "(". Avoid trying to get another line + // by making "getline" NULL. *paren = NUL; - deref = deref_function_name(arg, &tofree, evalarg, verbose); + char_u *(*getline)(int, void *, int, getline_opt_T) = NULL; + if (evalarg != NULL) + { + getline = evalarg->eval_getline; + evalarg->eval_getline = NULL; + } + + char_u *deref = deref_function_name(arg, &tofree, evalarg, verbose); if (deref == NULL) { *arg = name + len; @@ -4563,7 +4571,10 @@ eval_method( name = deref; len = (long)STRLEN(name); } + *paren = '('; + if (getline != NULL) + evalarg->eval_getline = getline; } if (ret == OK) |