aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMatthieu Coudron <mcoudron@hotmail.com>2020-11-18 22:52:49 +0100
committerMatthieu Coudron <mcoudron@hotmail.com>2020-11-23 21:06:56 +0100
commit4f1fc0f6d514980700152b7c05e5c92ec379f0d7 (patch)
tree56488620cbef1d2d13e7c9866364ea1d7292da17 /src
parent7dfeadb0fcbcedeafc357e60f0b7b2b8916afeaf (diff)
downloadrneovim-4f1fc0f6d514980700152b7c05e5c92ec379f0d7.tar.gz
rneovim-4f1fc0f6d514980700152b7c05e5c92ec379f0d7.tar.bz2
rneovim-4f1fc0f6d514980700152b7c05e5c92ec379f0d7.zip
refactor: pass window to was_set_insecurely
working on get_foldtext and wanted to get rid of the curwin backup/restore. Turns out it's not possible else f_foldtext is run on the same window. Kept the cleanup anyway.
Diffstat (limited to 'src')
-rw-r--r--src/nvim/buffer.c4
-rw-r--r--src/nvim/eval.c3
-rw-r--r--src/nvim/fold.c9
-rw-r--r--src/nvim/hardcopy.c2
-rw-r--r--src/nvim/indent.c3
-rw-r--r--src/nvim/ops.c4
-rw-r--r--src/nvim/option.c24
-rw-r--r--src/nvim/path.c8
-rw-r--r--src/nvim/screen.c8
9 files changed, 33 insertions, 32 deletions
diff --git a/src/nvim/buffer.c b/src/nvim/buffer.c
index 99cdde300d..ffa44c33cd 100644
--- a/src/nvim/buffer.c
+++ b/src/nvim/buffer.c
@@ -3198,7 +3198,7 @@ void maketitle(void)
int use_sandbox = false;
int save_called_emsg = called_emsg;
- use_sandbox = was_set_insecurely((char_u *)"titlestring", 0);
+ use_sandbox = was_set_insecurely(curwin, (char_u *)"titlestring", 0);
called_emsg = false;
build_stl_str_hl(curwin, (char_u *)buf, sizeof(buf),
p_titlestring, use_sandbox,
@@ -3309,7 +3309,7 @@ void maketitle(void)
int use_sandbox = false;
int save_called_emsg = called_emsg;
- use_sandbox = was_set_insecurely((char_u *)"iconstring", 0);
+ use_sandbox = was_set_insecurely(curwin, (char_u *)"iconstring", 0);
called_emsg = false;
build_stl_str_hl(curwin, icon_str, sizeof(buf),
p_iconstring, use_sandbox,
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index 402211080b..054b788940 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -1178,8 +1178,7 @@ int eval_foldexpr(char_u *arg, int *cp)
{
typval_T tv;
varnumber_T retval;
- int use_sandbox = was_set_insecurely((char_u *)"foldexpr",
- OPT_LOCAL);
+ int use_sandbox = was_set_insecurely(curwin, (char_u *)"foldexpr", OPT_LOCAL);
++emsg_off;
if (use_sandbox)
diff --git a/src/nvim/fold.c b/src/nvim/fold.c
index 5e28ca6538..654aa6d5ba 100644
--- a/src/nvim/fold.c
+++ b/src/nvim/fold.c
@@ -1835,10 +1835,11 @@ char_u *get_foldtext(win_T *wp, linenr_T lnum, linenr_T lnume,
curwin = wp;
curbuf = wp->w_buffer;
- ++emsg_silent; /* handle exceptions, but don't display errors */
- text = eval_to_string_safe(wp->w_p_fdt, NULL,
- was_set_insecurely((char_u *)"foldtext", OPT_LOCAL));
- --emsg_silent;
+ emsg_silent++; // handle exceptions, but don't display errors
+ text = eval_to_string_safe(
+ wp->w_p_fdt, NULL,
+ was_set_insecurely(wp, (char_u *)"foldtext", OPT_LOCAL));
+ emsg_silent--;
if (text == NULL || did_emsg)
got_fdt_error = TRUE;
diff --git a/src/nvim/hardcopy.c b/src/nvim/hardcopy.c
index 4a64cc31b1..2c954008b3 100644
--- a/src/nvim/hardcopy.c
+++ b/src/nvim/hardcopy.c
@@ -546,7 +546,7 @@ static void prt_header(prt_settings_T *const psettings, const int pagenum,
curwin->w_botline = lnum + 63;
printer_page_num = pagenum;
- use_sandbox = was_set_insecurely((char_u *)"printheader", 0);
+ use_sandbox = was_set_insecurely(curwin, (char_u *)"printheader", 0);
build_stl_str_hl(curwin, tbuf, (size_t)width + IOSIZE,
p_header, use_sandbox,
' ', width, NULL, NULL);
diff --git a/src/nvim/indent.c b/src/nvim/indent.c
index 9e6693afdf..fae971b3b3 100644
--- a/src/nvim/indent.c
+++ b/src/nvim/indent.c
@@ -453,7 +453,8 @@ int get_expr_indent(void)
colnr_T save_curswant;
int save_set_curswant;
int save_State;
- int use_sandbox = was_set_insecurely((char_u *)"indentexpr", OPT_LOCAL);
+ int use_sandbox = was_set_insecurely(
+ curwin, (char_u *)"indentexpr", OPT_LOCAL);
// Save and restore cursor position and curswant, in case it was changed
// * via :normal commands.
diff --git a/src/nvim/ops.c b/src/nvim/ops.c
index 9e7d81fc82..40dd5f0b5c 100644
--- a/src/nvim/ops.c
+++ b/src/nvim/ops.c
@@ -4117,8 +4117,8 @@ fex_format(
int c /* character to be inserted */
)
{
- int use_sandbox = was_set_insecurely((char_u *)"formatexpr",
- OPT_LOCAL);
+ int use_sandbox = was_set_insecurely(
+ curwin, (char_u *)"formatexpr", OPT_LOCAL);
int r;
char_u *fex;
diff --git a/src/nvim/option.c b/src/nvim/option.c
index 0a91687352..0996638158 100644
--- a/src/nvim/option.c
+++ b/src/nvim/option.c
@@ -945,7 +945,7 @@ set_option_default(
}
// The default value is not insecure.
- uint32_t *flagsp = insecure_flag(opt_idx, opt_flags);
+ uint32_t *flagsp = insecure_flag(curwin, opt_idx, opt_flags);
*flagsp = *flagsp & ~P_INSECURE;
}
@@ -1880,7 +1880,7 @@ int do_set(
saved_newval = (newval != NULL) ? xstrdup((char *)newval) : 0;
{
- uint32_t *p = insecure_flag(opt_idx, opt_flags);
+ uint32_t *p = insecure_flag(curwin, opt_idx, opt_flags);
const int secure_saved = secure;
// When an option is set in the sandbox, from a
@@ -2007,7 +2007,7 @@ static void did_set_option(
/* When an option is set in the sandbox, from a modeline or in secure mode
* set the P_INSECURE flag. Otherwise, if a new value is stored reset the
* flag. */
- uint32_t *p = insecure_flag(opt_idx, opt_flags);
+ uint32_t *p = insecure_flag(curwin, opt_idx, opt_flags);
if (!value_checked && (secure
|| sandbox != 0
|| (opt_flags & OPT_MODELINE))) {
@@ -2346,12 +2346,12 @@ static void check_string_option(char_u **pp)
/// Return true when option "opt" was set from a modeline or in secure mode.
/// Return false when it wasn't.
/// Return -1 for an unknown option.
-int was_set_insecurely(char_u *opt, int opt_flags)
+int was_set_insecurely(win_T *const wp, char_u *opt, int opt_flags)
{
int idx = findoption((const char *)opt);
if (idx >= 0) {
- uint32_t *flagp = insecure_flag(idx, opt_flags);
+ uint32_t *flagp = insecure_flag(wp, idx, opt_flags);
return (*flagp & P_INSECURE) != 0;
}
internal_error("was_set_insecurely()");
@@ -2360,16 +2360,16 @@ int was_set_insecurely(char_u *opt, int opt_flags)
/// Get a pointer to the flags used for the P_INSECURE flag of option
/// "opt_idx". For some local options a local flags field is used.
-static uint32_t *insecure_flag(int opt_idx, int opt_flags)
+static uint32_t *insecure_flag(win_T *const wp, int opt_idx, int opt_flags)
{
if (opt_flags & OPT_LOCAL)
switch ((int)options[opt_idx].indir) {
- case PV_STL: return &curwin->w_p_stl_flags;
- case PV_FDE: return &curwin->w_p_fde_flags;
- case PV_FDT: return &curwin->w_p_fdt_flags;
- case PV_INDE: return &curbuf->b_p_inde_flags;
- case PV_FEX: return &curbuf->b_p_fex_flags;
- case PV_INEX: return &curbuf->b_p_inex_flags;
+ case PV_STL: return &wp->w_p_stl_flags;
+ case PV_FDE: return &wp->w_p_fde_flags;
+ case PV_FDT: return &wp->w_p_fdt_flags;
+ case PV_INDE: return &wp->w_buffer->b_p_inde_flags;
+ case PV_FEX: return &wp->w_buffer->b_p_fex_flags;
+ case PV_INEX: return &wp->w_buffer->b_p_inex_flags;
}
// Nothing special, return global flags field.
diff --git a/src/nvim/path.c b/src/nvim/path.c
index 793f917f06..f52fbbd5c8 100644
--- a/src/nvim/path.c
+++ b/src/nvim/path.c
@@ -1610,10 +1610,10 @@ void simplify_filename(char_u *filename)
static char *eval_includeexpr(const char *const ptr, const size_t len)
{
- set_vim_var_string(VV_FNAME, ptr, (ptrdiff_t) len);
- char *res = (char *) eval_to_string_safe(
- curbuf->b_p_inex, NULL, was_set_insecurely((char_u *)"includeexpr",
- OPT_LOCAL));
+ set_vim_var_string(VV_FNAME, ptr, (ptrdiff_t)len);
+ char *res = (char *)eval_to_string_safe(
+ curbuf->b_p_inex, NULL,
+ was_set_insecurely(curwin, (char_u *)"includeexpr", OPT_LOCAL));
set_vim_var_string(VV_FNAME, NULL, 0);
return res;
}
diff --git a/src/nvim/screen.c b/src/nvim/screen.c
index 5f09912116..20fec490a9 100644
--- a/src/nvim/screen.c
+++ b/src/nvim/screen.c
@@ -5205,7 +5205,7 @@ win_redr_custom (
fillchar = ' ';
attr = HL_ATTR(HLF_TPF);
maxwidth = Columns;
- use_sandbox = was_set_insecurely((char_u *)"tabline", 0);
+ use_sandbox = was_set_insecurely(wp, (char_u *)"tabline", 0);
} else {
row = W_ENDROW(wp);
fillchar = fillchar_status(&attr, wp);
@@ -5236,14 +5236,14 @@ win_redr_custom (
attr = HL_ATTR(HLF_MSG);
}
- use_sandbox = was_set_insecurely((char_u *)"rulerformat", 0);
+ use_sandbox = was_set_insecurely(wp, (char_u *)"rulerformat", 0);
} else {
if (*wp->w_p_stl != NUL)
stl = wp->w_p_stl;
else
stl = p_stl;
- use_sandbox = was_set_insecurely((char_u *)"statusline",
- *wp->w_p_stl == NUL ? 0 : OPT_LOCAL);
+ use_sandbox = was_set_insecurely(
+ wp, (char_u *)"statusline", *wp->w_p_stl == NUL ? 0 : OPT_LOCAL);
}
col += wp->w_wincol;