diff options
author | Bram Moolenaar <Bram@vim.org> | 2023-01-06 18:42:20 +0000 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2023-01-06 18:42:20 +0000 |
commit | 94674f2223aafeaa4690f25e12f3ebe07814c5ba (patch) | |
tree | ec39a32dd6513f68e6f524c4272424a334403def /src/evalvars.c | |
parent | 5bcd29b84e4dd6435177f37a544ecbf8df02412c (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.c | 16 |
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; } |