diff options
author | Jacques Germishuys <jacquesg@users.noreply.github.com> | 2020-09-02 04:22:42 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-01 20:22:42 -0700 |
commit | a166c2aadbb43f095325637874e7f2a7379d967a (patch) | |
tree | c1dc93d3750f623f170e17231e465fc7a3a6f467 /src/nvim/eval.c | |
parent | 4bcf54478ad4ce47908f2eb912b6d98d81e6a78d (diff) | |
download | rneovim-a166c2aadbb43f095325637874e7f2a7379d967a.tar.gz rneovim-a166c2aadbb43f095325637874e7f2a7379d967a.tar.bz2 rneovim-a166c2aadbb43f095325637874e7f2a7379d967a.zip |
eval_call_provider(): free unused return value #12819
Caller can pass discard=true to free the unwanted return value.
Diffstat (limited to 'src/nvim/eval.c')
-rw-r--r-- | src/nvim/eval.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c index 5aeb6fa746..21a5603b93 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -10383,10 +10383,13 @@ void script_host_eval(char *name, typval_T *argvars, typval_T *rettv) list_T *args = tv_list_alloc(1); tv_list_append_string(args, (const char *)argvars[0].vval.v_string, -1); - *rettv = eval_call_provider(name, "eval", args); + *rettv = eval_call_provider(name, "eval", args, false); } -typval_T eval_call_provider(char *provider, char *method, list_T *arguments) +/// @param discard Clears the value returned by the provider and returns +/// an empty typval_T. +typval_T eval_call_provider(char *provider, char *method, list_T *arguments, + bool discard) { if (!eval_has_provider(provider)) { emsgf("E319: No \"%s\" provider found. Run \":checkhealth provider\"", @@ -10445,6 +10448,10 @@ typval_T eval_call_provider(char *provider, char *method, list_T *arguments) provider_call_nesting--; assert(provider_call_nesting >= 0); + if (discard) { + tv_clear(&rettv); + } + return rettv; } |