summaryrefslogtreecommitdiffstats
path: root/src/eval.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2006-09-02 11:41:07 +0000
committerBram Moolenaar <Bram@vim.org>2006-09-02 11:41:07 +0000
commit4e957aff02e4d998cd16ae37816079ab645d9881 (patch)
treed11c21e7f38b135f7301559974af336ed505d7c9 /src/eval.c
parent9526a543cc1815c2bc9d4e0718b320a0b81c1a6f (diff)
updated for version 7.0-077v7.0.077
Diffstat (limited to 'src/eval.c')
-rw-r--r--src/eval.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/src/eval.c b/src/eval.c
index 2311973512..0762cabacb 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -701,6 +701,7 @@ static void list_one_var __ARGS((dictitem_T *v, char_u *prefix));
static void list_one_var_a __ARGS((char_u *prefix, char_u *name, int type, char_u *string));
static void set_var __ARGS((char_u *name, typval_T *varp, int copy));
static int var_check_ro __ARGS((int flags, char_u *name));
+static int var_check_fixed __ARGS((int flags, char_u *name));
static int tv_check_lock __ARGS((int lock, char_u *name));
static void copy_tv __ARGS((typval_T *from, typval_T *to));
static int item_copy __ARGS((typval_T *from, typval_T *to, int deep, int copyID));
@@ -3364,6 +3365,8 @@ do_unlet(name, forceit)
hi = hash_find(ht, varname);
if (!HASHITEM_EMPTY(hi))
{
+ if (var_check_fixed(HI2DI(hi)->di_flags, name))
+ return FAIL;
if (var_check_ro(HI2DI(hi)->di_flags, name))
return FAIL;
delete_var(ht, hi);
@@ -17818,7 +17821,7 @@ set_var(name, tv, copy)
}
/*
- * Return TRUE if di_flags "flags" indicate read-only variable "name".
+ * Return TRUE if di_flags "flags" indicates variable "name" is read-only.
* Also give an error message.
*/
static int
@@ -17840,6 +17843,23 @@ var_check_ro(flags, name)
}
/*
+ * Return TRUE if di_flags "flags" indicates variable "name" is fixed.
+ * Also give an error message.
+ */
+ static int
+var_check_fixed(flags, name)
+ int flags;
+ char_u *name;
+{
+ if (flags & DI_FLAGS_FIX)
+ {
+ EMSG2(_("E795: Cannot delete variable %s"), name);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+/*
* Return TRUE if typeval "tv" is set to be locked (immutable).
* Also give an error message, using "name".
*/