summaryrefslogtreecommitdiffstats
path: root/src/evalvars.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2023-01-06 18:42:20 +0000
committerBram Moolenaar <Bram@vim.org>2023-01-06 18:42:20 +0000
commit94674f2223aafeaa4690f25e12f3ebe07814c5ba (patch)
treeec39a32dd6513f68e6f524c4272424a334403def /src/evalvars.c
parent5bcd29b84e4dd6435177f37a544ecbf8df02412c (diff)
patch 9.0.1152: class "implements" argument not implementedv9.0.1152
Problem: Class "implements" argument not implemented. Solution: Implement "implements" argument. Add basic checks for when a class implements an interface.
Diffstat (limited to 'src/evalvars.c')
-rw-r--r--src/evalvars.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/evalvars.c b/src/evalvars.c
index a1970427a2..c2cb61c37a 100644
--- a/src/evalvars.c
+++ b/src/evalvars.c
@@ -2913,7 +2913,7 @@ set_cmdarg(exarg_T *eap, char_u *oldarg)
int
eval_variable(
char_u *name,
- int len, // length of "name"
+ int len, // length of "name" or zero
scid_T sid, // script ID for imported item or zero
typval_T *rettv, // NULL when only checking existence
dictitem_T **dip, // non-NULL when typval's dict item is needed
@@ -2923,12 +2923,15 @@ eval_variable(
typval_T *tv = NULL;
int found = FALSE;
hashtab_T *ht = NULL;
- int cc;
+ int cc = 0;
type_T *type = NULL;
- // truncate the name, so that we can use strcmp()
- cc = name[len];
- name[len] = NUL;
+ if (len > 0)
+ {
+ // truncate the name, so that we can use strcmp()
+ cc = name[len];
+ name[len] = NUL;
+ }
// Check for local variable when debugging.
if ((tv = lookup_debug_var(name)) == NULL)
@@ -3095,7 +3098,8 @@ eval_variable(
}
}
- name[len] = cc;
+ if (len > 0)
+ name[len] = cc;
return ret;
}