summaryrefslogtreecommitdiff
path: root/src/eval.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/eval.c')
-rw-r--r--src/eval.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/eval.c b/src/eval.c
index f65c9a0b1..70a1daa44 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -10285,14 +10285,22 @@ get_job_options(typval_T *tv, jobopt_T *opt, int supported)
static channel_T *
get_channel_arg(typval_T *tv)
{
- channel_T *channel;
+ channel_T *channel = NULL;
- if (tv->v_type != VAR_CHANNEL)
+ if (tv->v_type == VAR_JOB)
+ {
+ if (tv->vval.v_job != NULL)
+ channel = tv->vval.v_job->jv_channel;
+ }
+ else if (tv->v_type == VAR_CHANNEL)
+ {
+ channel = tv->vval.v_channel;
+ }
+ else
{
EMSG2(_(e_invarg2), get_tv_string(tv));
return NULL;
}
- channel = tv->vval.v_channel;
if (channel == NULL || !channel_is_open(channel))
{
@@ -15106,7 +15114,7 @@ f_job_setoptions(typval_T *argvars, typval_T *rettv UNUSED)
* "job_start()" function
*/
static void
-f_job_start(typval_T *argvars UNUSED, typval_T *rettv)
+f_job_start(typval_T *argvars, typval_T *rettv)
{
job_T *job;
char_u *cmd = NULL;