mirror of
https://github.com/neovim/neovim.git
synced 2024-12-26 14:11:15 -07:00
Merge #5316
This commit is contained in:
commit
bccb49bedb
@ -21765,9 +21765,15 @@ static inline bool common_job_start(TerminalJobData *data, typval_T *rettv)
|
||||
Process *proc = (Process *)&data->proc;
|
||||
if (proc->type == kProcessTypePty && proc->detach) {
|
||||
EMSG2(_(e_invarg2), "terminal/pty job cannot be detached");
|
||||
xfree(data->proc.pty.term_name);
|
||||
shell_free_argv(proc->argv);
|
||||
free_term_job_data_event((void **)&data);
|
||||
return false;
|
||||
}
|
||||
|
||||
data->id = next_chan_id++;
|
||||
pmap_put(uint64_t)(jobs, data->id, data);
|
||||
|
||||
data->refcount++;
|
||||
char *cmd = xstrdup(proc->argv[0]);
|
||||
if (!process_spawn(proc)) {
|
||||
@ -21782,7 +21788,6 @@ static inline bool common_job_start(TerminalJobData *data, typval_T *rettv)
|
||||
}
|
||||
xfree(cmd);
|
||||
|
||||
data->id = next_chan_id++;
|
||||
|
||||
if (data->rpc) {
|
||||
// the rpc channel takes over the in and out streams
|
||||
@ -21799,7 +21804,6 @@ static inline bool common_job_start(TerminalJobData *data, typval_T *rettv)
|
||||
rstream_init(proc->err, 0);
|
||||
rstream_start(proc->err, on_job_stderr, data);
|
||||
}
|
||||
pmap_put(uint64_t)(jobs, data->id, data);
|
||||
rettv->vval.v_number = data->id;
|
||||
return true;
|
||||
}
|
||||
@ -21821,6 +21825,7 @@ static inline void free_term_job_data_event(void **argv)
|
||||
dict_unref(data->self);
|
||||
}
|
||||
queue_free(data->events);
|
||||
pmap_del(uint64_t)(jobs, data->id);
|
||||
xfree(data);
|
||||
}
|
||||
|
||||
@ -21927,7 +21932,6 @@ static void on_process_exit(Process *proc, int status, void *d)
|
||||
|
||||
process_job_event(data, data->on_exit, "exit", NULL, 0, status);
|
||||
|
||||
pmap_del(uint64_t)(jobs, data->id);
|
||||
term_job_data_decref(data);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user