aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/eval.c
diff options
context:
space:
mode:
authorJacques Germishuys <jacquesg@users.noreply.github.com>2020-09-02 04:22:42 +0100
committerGitHub <noreply@github.com>2020-09-01 20:22:42 -0700
commita166c2aadbb43f095325637874e7f2a7379d967a (patch)
treec1dc93d3750f623f170e17231e465fc7a3a6f467 /src/nvim/eval.c
parent4bcf54478ad4ce47908f2eb912b6d98d81e6a78d (diff)
downloadrneovim-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.c11
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;
}