aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/eval.c
diff options
context:
space:
mode:
authorJosh Rahm <rahm@google.com>2022-08-22 15:52:25 -0600
committerJosh Rahm <rahm@google.com>2022-08-22 15:52:25 -0600
commit24c75e4f7be4eb4052939e7d5db7721d88288604 (patch)
tree55e6e0c8e5f45e7ac007f33f025f98ad2921af36 /src/nvim/eval.c
parentbf37d6bbd02d79fd86dc7740f0c27ebb1b5f5903 (diff)
parentbaaaa1f2b3b6ae3a989d1362a27e55dc7b0b148a (diff)
downloadrneovim-24c75e4f7be4eb4052939e7d5db7721d88288604.tar.gz
rneovim-24c75e4f7be4eb4052939e7d5db7721d88288604.tar.bz2
rneovim-24c75e4f7be4eb4052939e7d5db7721d88288604.zip
Merge remote-tracking branch 'upstream/master' into userreg
Diffstat (limited to 'src/nvim/eval.c')
-rw-r--r--src/nvim/eval.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index 05497e86ce..1f7e4640b7 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -2192,7 +2192,7 @@ int pattern_match(char *pat, char *text, bool ic)
// avoid 'l' flag in 'cpoptions'
char *save_cpo = p_cpo;
- p_cpo = "";
+ p_cpo = (char *)empty_option;
regmatch.regprog = vim_regcomp(pat, RE_MAGIC + RE_STRING);
if (regmatch.regprog != NULL) {
regmatch.rm_ic = ic;
@@ -8387,6 +8387,11 @@ char *do_string_sub(char *str, char *pat, char *sub, typval_T *expr, char *flags
p_cpo = save_cpo;
} else {
// Darn, evaluating {sub} expression or {expr} changed the value.
+ // If it's still empty it was changed and restored, need to restore in
+ // the complicated way.
+ if (*p_cpo == NUL) {
+ set_option_value_give_err("cpo", 0L, save_cpo, 0);
+ }
free_string_option((char_u *)save_cpo);
}