summaryrefslogtreecommitdiff
path: root/data/vim/patches/8.1.0177
diff options
context:
space:
mode:
Diffstat (limited to 'data/vim/patches/8.1.0177')
-rw-r--r--data/vim/patches/8.1.0177146
1 files changed, 146 insertions, 0 deletions
diff --git a/data/vim/patches/8.1.0177 b/data/vim/patches/8.1.0177
new file mode 100644
index 000000000..7df24e759
--- /dev/null
+++ b/data/vim/patches/8.1.0177
@@ -0,0 +1,146 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 8.1.0177
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 8.1.0177
+Problem: Defining function in sandbox is inconsistent, cannot use :function
+ but can define a lambda.
+Solution: Allow defining a function in the sandbox, but also use the sandbox
+ when executing it. (closes #3182)
+Files: src/userfunc.c, src/ex_cmds.h
+
+
+*** ../vim-8.1.0176/src/userfunc.c Sun Jul 8 17:18:58 2018
+--- src/userfunc.c Tue Jul 10 19:30:35 2018
+***************
+*** 14,26 ****
+ #include "vim.h"
+
+ #if defined(FEAT_EVAL) || defined(PROTO)
+! /* function flags */
+! #define FC_ABORT 0x01 /* abort function on error */
+! #define FC_RANGE 0x02 /* function accepts range */
+! #define FC_DICT 0x04 /* Dict function, uses "self" */
+! #define FC_CLOSURE 0x08 /* closure, uses outer scope variables */
+! #define FC_DELETED 0x10 /* :delfunction used while uf_refcount > 0 */
+! #define FC_REMOVED 0x20 /* function redefined while uf_refcount > 0 */
+
+ /* From user function to hashitem and back. */
+ #define UF2HIKEY(fp) ((fp)->uf_name)
+--- 14,27 ----
+ #include "vim.h"
+
+ #if defined(FEAT_EVAL) || defined(PROTO)
+! // flags used in uf_flags
+! #define FC_ABORT 0x01 // abort function on error
+! #define FC_RANGE 0x02 // function accepts range
+! #define FC_DICT 0x04 // Dict function, uses "self"
+! #define FC_CLOSURE 0x08 // closure, uses outer scope variables
+! #define FC_DELETED 0x10 // :delfunction used while uf_refcount > 0
+! #define FC_REMOVED 0x20 // function redefined while uf_refcount > 0
+! #define FC_SANDBOX 0x40 // function defined in the sandbox
+
+ /* From user function to hashitem and back. */
+ #define UF2HIKEY(fp) ((fp)->uf_name)
+***************
+*** 296,301 ****
+--- 297,304 ----
+ if (prof_def_func())
+ func_do_profile(fp);
+ #endif
++ if (sandbox)
++ flags |= FC_SANDBOX;
+ fp->uf_varargs = TRUE;
+ fp->uf_flags = flags;
+ fp->uf_calls = 0;
+***************
+*** 688,693 ****
+--- 691,697 ----
+ char_u *save_sourcing_name;
+ linenr_T save_sourcing_lnum;
+ scid_T save_current_SID;
++ int using_sandbox = FALSE;
+ funccall_T *fc;
+ int save_did_emsg;
+ static int depth = 0;
+***************
+*** 854,859 ****
+--- 858,870 ----
+ save_sourcing_name = sourcing_name;
+ save_sourcing_lnum = sourcing_lnum;
+ sourcing_lnum = 1;
++
++ if (fp->uf_flags & FC_SANDBOX)
++ {
++ using_sandbox = TRUE;
++ ++sandbox;
++ }
++
+ /* need space for function name + ("function " + 3) or "[number]" */
+ len = (save_sourcing_name == NULL ? 0 : STRLEN(save_sourcing_name))
+ + STRLEN(fp->uf_name) + 20;
+***************
+*** 1020,1025 ****
+--- 1031,1038 ----
+ if (do_profiling == PROF_YES)
+ script_prof_restore(&wait_start);
+ #endif
++ if (using_sandbox)
++ --sandbox;
+
+ if (p_verbose >= 12 && sourcing_name != NULL)
+ {
+***************
+*** 2429,2434 ****
+--- 2442,2449 ----
+ func_do_profile(fp);
+ #endif
+ fp->uf_varargs = varargs;
++ if (sandbox)
++ flags |= FC_SANDBOX;
+ fp->uf_flags = flags;
+ fp->uf_calls = 0;
+ fp->uf_script_ID = current_SID;
+*** ../vim-8.1.0176/src/ex_cmds.h Tue Apr 3 22:07:59 2018
+--- src/ex_cmds.h Tue Jul 10 19:17:05 2018
+***************
+*** 584,590 ****
+ EXTRA|NOTRLCOM|SBOXOK|CMDWIN,
+ ADDR_LINES),
+ EX(CMD_function, "function", ex_function,
+! EXTRA|BANG|CMDWIN,
+ ADDR_LINES),
+ EX(CMD_global, "global", ex_global,
+ RANGE|WHOLEFOLD|BANG|EXTRA|DFLALL|SBOXOK|CMDWIN,
+--- 584,590 ----
+ EXTRA|NOTRLCOM|SBOXOK|CMDWIN,
+ ADDR_LINES),
+ EX(CMD_function, "function", ex_function,
+! EXTRA|BANG|SBOXOK|CMDWIN,
+ ADDR_LINES),
+ EX(CMD_global, "global", ex_global,
+ RANGE|WHOLEFOLD|BANG|EXTRA|DFLALL|SBOXOK|CMDWIN,
+*** ../vim-8.1.0176/src/version.c Tue Jul 10 17:33:41 2018
+--- src/version.c Tue Jul 10 19:38:37 2018
+***************
+*** 791,792 ****
+--- 791,794 ----
+ { /* Add new patch number below this line */
++ /**/
++ 177,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+224. You set up your own Web page. You set up a Web page for each
+ of your kids... and your pets.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///