summaryrefslogtreecommitdiffstats
path: root/source/ap/vim/patches/7.3.603
diff options
context:
space:
mode:
Diffstat (limited to 'source/ap/vim/patches/7.3.603')
-rw-r--r--source/ap/vim/patches/7.3.603370
1 files changed, 0 insertions, 370 deletions
diff --git a/source/ap/vim/patches/7.3.603 b/source/ap/vim/patches/7.3.603
deleted file mode 100644
index 00a024b0a..000000000
--- a/source/ap/vim/patches/7.3.603
+++ /dev/null
@@ -1,370 +0,0 @@
-To: vim_dev@googlegroups.com
-Subject: Patch 7.3.603
-Fcc: outbox
-From: Bram Moolenaar <Bram@moolenaar.net>
-Mime-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-------------
-
-Patch 7.3.603
-Problem: It is possible to add replace builtin functions by calling
- extend() on g:.
-Solution: Add a flag to a dict to indicate it is a scope. Check for
- existing functions. (ZyX)
-Files: src/buffer.c, src/eval.c, src/proto/eval.pro, src/structs.h,
- src/testdir/test34.in, src/testdir/test34.ok, src/window.c
-
-
-*** ../vim-7.3.602/src/buffer.c 2012-07-10 15:18:18.000000000 +0200
---- src/buffer.c 2012-07-16 16:52:58.000000000 +0200
-***************
-*** 1747,1753 ****
- buf->b_wininfo->wi_win = curwin;
-
- #ifdef FEAT_EVAL
-! init_var_dict(&buf->b_vars, &buf->b_bufvar); /* init b: variables */
- #endif
- #ifdef FEAT_SYN_HL
- hash_init(&buf->b_s.b_keywtab);
---- 1747,1754 ----
- buf->b_wininfo->wi_win = curwin;
-
- #ifdef FEAT_EVAL
-! /* init b: variables */
-! init_var_dict(&buf->b_vars, &buf->b_bufvar, VAR_SCOPE);
- #endif
- #ifdef FEAT_SYN_HL
- hash_init(&buf->b_s.b_keywtab);
-*** ../vim-7.3.602/src/eval.c 2012-07-10 13:41:09.000000000 +0200
---- src/eval.c 2012-07-16 17:18:11.000000000 +0200
-***************
-*** 850,857 ****
- int i;
- struct vimvar *p;
-
-! init_var_dict(&globvardict, &globvars_var);
-! init_var_dict(&vimvardict, &vimvars_var);
- vimvardict.dv_lock = VAR_FIXED;
- hash_init(&compat_hashtab);
- hash_init(&func_hashtab);
---- 850,857 ----
- int i;
- struct vimvar *p;
-
-! init_var_dict(&globvardict, &globvars_var, VAR_DEF_SCOPE);
-! init_var_dict(&vimvardict, &vimvars_var, VAR_SCOPE);
- vimvardict.dv_lock = VAR_FIXED;
- hash_init(&compat_hashtab);
- hash_init(&func_hashtab);
-***************
-*** 2725,2738 ****
- lp->ll_dict = lp->ll_tv->vval.v_dict;
- lp->ll_di = dict_find(lp->ll_dict, key, len);
-
-! /* When assigning to g: check that a function and variable name is
-! * valid. */
-! if (rettv != NULL && lp->ll_dict == &globvardict)
- {
-! if (rettv->v_type == VAR_FUNC
- && var_check_func_name(key, lp->ll_di == NULL))
-! return NULL;
-! if (!valid_varname(key))
- return NULL;
- }
-
---- 2725,2750 ----
- lp->ll_dict = lp->ll_tv->vval.v_dict;
- lp->ll_di = dict_find(lp->ll_dict, key, len);
-
-! /* When assigning to a scope dictionary check that a function and
-! * variable name is valid (only variable name unless it is l: or
-! * g: dictionary). Disallow overwriting a builtin function. */
-! if (rettv != NULL && lp->ll_dict->dv_scope != 0)
- {
-! int prevval;
-! int wrong;
-!
-! if (len != -1)
-! {
-! prevval = key[len];
-! key[len] = NUL;
-! }
-! wrong = (lp->ll_dict->dv_scope == VAR_DEF_SCOPE
-! && rettv->v_type == VAR_FUNC
- && var_check_func_name(key, lp->ll_di == NULL))
-! || !valid_varname(key);
-! if (len != -1)
-! key[len] = prevval;
-! if (wrong)
- return NULL;
- }
-
-***************
-*** 6951,6957 ****
- d = (dict_T *)alloc(sizeof(dict_T));
- if (d != NULL)
- {
-! /* Add the list to the list of dicts for garbage collection. */
- if (first_dict != NULL)
- first_dict->dv_used_prev = d;
- d->dv_used_next = first_dict;
---- 6963,6969 ----
- d = (dict_T *)alloc(sizeof(dict_T));
- if (d != NULL)
- {
-! /* Add the dict to the list of dicts for garbage collection. */
- if (first_dict != NULL)
- first_dict->dv_used_prev = d;
- d->dv_used_next = first_dict;
-***************
-*** 6960,6965 ****
---- 6972,6978 ----
-
- hash_init(&d->dv_hashtab);
- d->dv_lock = 0;
-+ d->dv_scope = 0;
- d->dv_refcount = 0;
- d->dv_copyID = 0;
- }
-***************
-*** 10203,10208 ****
---- 10216,10234 ----
- {
- --todo;
- di1 = dict_find(d1, hi2->hi_key, -1);
-+ if (d1->dv_scope != 0)
-+ {
-+ /* Disallow replacing a builtin function in l: and g:.
-+ * Check the key to be valid when adding to any
-+ * scope. */
-+ if (d1->dv_scope == VAR_DEF_SCOPE
-+ && HI2DI(hi2)->di_tv.v_type == VAR_FUNC
-+ && var_check_func_name(hi2->hi_key,
-+ di1 == NULL))
-+ break;
-+ if (!valid_varname(hi2->hi_key))
-+ break;
-+ }
- if (di1 == NULL)
- {
- di1 = dictitem_copy(HI2DI(hi2));
-***************
-*** 20027,20033 ****
- {
- sv = SCRIPT_SV(ga_scripts.ga_len + 1) =
- (scriptvar_T *)alloc_clear(sizeof(scriptvar_T));
-! init_var_dict(&sv->sv_dict, &sv->sv_var);
- ++ga_scripts.ga_len;
- }
- }
---- 20053,20059 ----
- {
- sv = SCRIPT_SV(ga_scripts.ga_len + 1) =
- (scriptvar_T *)alloc_clear(sizeof(scriptvar_T));
-! init_var_dict(&sv->sv_dict, &sv->sv_var, VAR_SCOPE);
- ++ga_scripts.ga_len;
- }
- }
-***************
-*** 20038,20049 ****
- * point to it.
- */
- void
-! init_var_dict(dict, dict_var)
- dict_T *dict;
- dictitem_T *dict_var;
- {
- hash_init(&dict->dv_hashtab);
- dict->dv_lock = 0;
- dict->dv_refcount = DO_NOT_FREE_CNT;
- dict->dv_copyID = 0;
- dict_var->di_tv.vval.v_dict = dict;
---- 20064,20077 ----
- * point to it.
- */
- void
-! init_var_dict(dict, dict_var, scope)
- dict_T *dict;
- dictitem_T *dict_var;
-+ int scope;
- {
- hash_init(&dict->dv_hashtab);
- dict->dv_lock = 0;
-+ dict->dv_scope = scope;
- dict->dv_refcount = DO_NOT_FREE_CNT;
- dict->dv_copyID = 0;
- dict_var->di_tv.vval.v_dict = dict;
-***************
-*** 22304,22310 ****
- /*
- * Init l: variables.
- */
-! init_var_dict(&fc->l_vars, &fc->l_vars_var);
- if (selfdict != NULL)
- {
- /* Set l:self to "selfdict". Use "name" to avoid a warning from
---- 22332,22338 ----
- /*
- * Init l: variables.
- */
-! init_var_dict(&fc->l_vars, &fc->l_vars_var, VAR_DEF_SCOPE);
- if (selfdict != NULL)
- {
- /* Set l:self to "selfdict". Use "name" to avoid a warning from
-***************
-*** 22325,22331 ****
- * Set a:0 to "argcount".
- * Set a:000 to a list with room for the "..." arguments.
- */
-! init_var_dict(&fc->l_avars, &fc->l_avars_var);
- add_nr_var(&fc->l_avars, &fc->fixvar[fixvar_idx++].var, "0",
- (varnumber_T)(argcount - fp->uf_args.ga_len));
- /* Use "name" to avoid a warning from some compiler that checks the
---- 22353,22359 ----
- * Set a:0 to "argcount".
- * Set a:000 to a list with room for the "..." arguments.
- */
-! init_var_dict(&fc->l_avars, &fc->l_avars_var, VAR_SCOPE);
- add_nr_var(&fc->l_avars, &fc->fixvar[fixvar_idx++].var, "0",
- (varnumber_T)(argcount - fp->uf_args.ga_len));
- /* Use "name" to avoid a warning from some compiler that checks the
-*** ../vim-7.3.602/src/proto/eval.pro 2012-06-29 12:54:32.000000000 +0200
---- src/proto/eval.pro 2012-07-16 16:55:16.000000000 +0200
-***************
-*** 93,99 ****
- char_u *get_tv_string_chk __ARGS((typval_T *varp));
- char_u *get_var_value __ARGS((char_u *name));
- void new_script_vars __ARGS((scid_T id));
-! void init_var_dict __ARGS((dict_T *dict, dictitem_T *dict_var));
- void vars_clear __ARGS((hashtab_T *ht));
- void copy_tv __ARGS((typval_T *from, typval_T *to));
- void ex_echo __ARGS((exarg_T *eap));
---- 93,99 ----
- char_u *get_tv_string_chk __ARGS((typval_T *varp));
- char_u *get_var_value __ARGS((char_u *name));
- void new_script_vars __ARGS((scid_T id));
-! void init_var_dict __ARGS((dict_T *dict, dictitem_T *dict_var, int scope));
- void vars_clear __ARGS((hashtab_T *ht));
- void copy_tv __ARGS((typval_T *from, typval_T *to));
- void ex_echo __ARGS((exarg_T *eap));
-*** ../vim-7.3.602/src/structs.h 2012-06-06 19:02:40.000000000 +0200
---- src/structs.h 2012-07-16 16:56:43.000000000 +0200
-***************
-*** 1106,1111 ****
---- 1106,1116 ----
- #define VAR_DICT 5 /* "v_dict" is used */
- #define VAR_FLOAT 6 /* "v_float" is used */
-
-+ /* Values for "dv_scope". */
-+ #define VAR_SCOPE 1 /* a:, v:, s:, etc. scope dictionaries */
-+ #define VAR_DEF_SCOPE 2 /* l:, g: scope dictionaries: here funcrefs are not
-+ allowed to mask existing functions */
-+
- /* Values for "v_lock". */
- #define VAR_LOCKED 1 /* locked with lock(), can use unlock() */
- #define VAR_FIXED 2 /* locked forever */
-***************
-*** 1181,1186 ****
---- 1186,1192 ----
- int dv_copyID; /* ID used by deepcopy() */
- dict_T *dv_copydict; /* copied dict used by deepcopy() */
- char dv_lock; /* zero, VAR_LOCKED, VAR_FIXED */
-+ char dv_scope; /* zero, VAR_SCOPE, VAR_DEF_SCOPE */
- dict_T *dv_used_next; /* next dict in used dicts list */
- dict_T *dv_used_prev; /* previous dict in used dicts list */
- };
-*** ../vim-7.3.602/src/testdir/test34.in 2010-08-15 21:57:29.000000000 +0200
---- src/testdir/test34.in 2012-07-16 16:51:29.000000000 +0200
-***************
-*** 1,5 ****
---- 1,6 ----
- Test for user functions.
- Also test an <expr> mapping calling a function.
-+ Also test that a builtin function cannot be replaced.
-
- STARTTEST
- :so small.vim
-***************
-*** 58,64 ****
- ---*---
- (one
- (two
-! [(one again:$-5,$w! test.out
- :delfunc Table
- :delfunc Compute
- :delfunc Expr1
---- 59,68 ----
- ---*---
- (one
- (two
-! [(one again:call append(line('$'), max([1, 2, 3]))
-! :call extend(g:, {'max': function('min')})
-! :call append(line('$'), max([1, 2, 3]))
-! :$-7,$w! test.out
- :delfunc Table
- :delfunc Compute
- :delfunc Expr1
-*** ../vim-7.3.602/src/testdir/test34.ok 2011-10-12 22:02:07.000000000 +0200
---- src/testdir/test34.ok 2012-07-16 16:43:15.000000000 +0200
-***************
-*** 4,6 ****
---- 4,8 ----
- 1. one
- 2. two
- 1. one again
-+ 3
-+ 3
-*** ../vim-7.3.602/src/window.c 2012-07-06 18:27:34.000000000 +0200
---- src/window.c 2012-07-16 16:53:45.000000000 +0200
-***************
-*** 3468,3474 ****
- # endif
- #ifdef FEAT_EVAL
- /* init t: variables */
-! init_var_dict(&tp->tp_vars, &tp->tp_winvar);
- #endif
- tp->tp_ch_used = p_ch;
- }
---- 3468,3474 ----
- # endif
- #ifdef FEAT_EVAL
- /* init t: variables */
-! init_var_dict(&tp->tp_vars, &tp->tp_winvar, VAR_SCOPE);
- #endif
- tp->tp_ch_used = p_ch;
- }
-***************
-*** 4410,4416 ****
- #endif
- #ifdef FEAT_EVAL
- /* init w: variables */
-! init_var_dict(&new_wp->w_vars, &new_wp->w_winvar);
- #endif
- #ifdef FEAT_FOLDING
- foldInitWin(new_wp);
---- 4410,4416 ----
- #endif
- #ifdef FEAT_EVAL
- /* init w: variables */
-! init_var_dict(&new_wp->w_vars, &new_wp->w_winvar, VAR_SCOPE);
- #endif
- #ifdef FEAT_FOLDING
- foldInitWin(new_wp);
-*** ../vim-7.3.602/src/version.c 2012-07-16 17:27:57.000000000 +0200
---- src/version.c 2012-07-16 17:29:06.000000000 +0200
-***************
-*** 716,717 ****
---- 716,719 ----
- { /* Add new patch number below this line */
-+ /**/
-+ 603,
- /**/
-
---
-Birthdays are healthy. The more you have them, the longer you live.
-
- /// 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 ///