aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJames McCoy <jamessan@jamessan.com>2019-12-12 07:26:39 -0500
committerJames McCoy <jamessan@jamessan.com>2019-12-12 07:57:27 -0500
commit91b313a904c039a9b6a53a7afc9f66e67a1e12fc (patch)
tree8d889a35b0c52cea3f3a9c465d6c14f23d9e26b8 /src
parent39963c6a04afc417a821b2255a5caea4b7955d7d (diff)
downloadrneovim-91b313a904c039a9b6a53a7afc9f66e67a1e12fc.tar.gz
rneovim-91b313a904c039a9b6a53a7afc9f66e67a1e12fc.tar.bz2
rneovim-91b313a904c039a9b6a53a7afc9f66e67a1e12fc.zip
Add negative test for type of job's env option
Diffstat (limited to 'src')
-rw-r--r--src/nvim/eval.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index e498253db1..c14b7f513d 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -12630,17 +12630,18 @@ static void f_jobstart(typval_T *argvars, typval_T *rettv, FunPtr fptr)
return;
}
}
- dictitem_T *item;
- item = tv_dict_find(job_opts, S_LEN("env"));
- if (item) {
- size_t custom_env_size = (size_t)tv_dict_len(item->di_tv.vval.v_dict);
- size_t i = 0;
- size_t env_size = 0;
- if (item->di_tv.v_type != VAR_DICT) {
+ dictitem_T *job_env = tv_dict_find(job_opts, S_LEN("env"));
+ if (job_env) {
+ if (job_env->di_tv.v_type != VAR_DICT) {
EMSG2(_(e_invarg2), "env");
+ shell_free_argv(argv);
return;
}
+ size_t custom_env_size = (size_t)tv_dict_len(job_env->di_tv.vval.v_dict);
+ size_t i = 0;
+ size_t env_size = 0;
+
if (clear_env) {
// + 1 for last null entry
env = xmalloc((custom_env_size + 1) * sizeof(*env));
@@ -12655,7 +12656,7 @@ static void f_jobstart(typval_T *argvars, typval_T *rettv, FunPtr fptr)
}
assert(env); // env must be allocated at this point
- TV_DICT_ITER(item->di_tv.vval.v_dict, var, {
+ TV_DICT_ITER(job_env->di_tv.vval.v_dict, var, {
const char *str = tv_get_string(&var->di_tv);
assert(str);
size_t len = STRLEN(var->di_key) + strlen(str) + strlen("=") + 1;