mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06: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;
|
Process *proc = (Process *)&data->proc;
|
||||||
if (proc->type == kProcessTypePty && proc->detach) {
|
if (proc->type == kProcessTypePty && proc->detach) {
|
||||||
EMSG2(_(e_invarg2), "terminal/pty job cannot be detached");
|
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;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
data->id = next_chan_id++;
|
||||||
|
pmap_put(uint64_t)(jobs, data->id, data);
|
||||||
|
|
||||||
data->refcount++;
|
data->refcount++;
|
||||||
char *cmd = xstrdup(proc->argv[0]);
|
char *cmd = xstrdup(proc->argv[0]);
|
||||||
if (!process_spawn(proc)) {
|
if (!process_spawn(proc)) {
|
||||||
@ -21782,7 +21788,6 @@ static inline bool common_job_start(TerminalJobData *data, typval_T *rettv)
|
|||||||
}
|
}
|
||||||
xfree(cmd);
|
xfree(cmd);
|
||||||
|
|
||||||
data->id = next_chan_id++;
|
|
||||||
|
|
||||||
if (data->rpc) {
|
if (data->rpc) {
|
||||||
// the rpc channel takes over the in and out streams
|
// 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_init(proc->err, 0);
|
||||||
rstream_start(proc->err, on_job_stderr, data);
|
rstream_start(proc->err, on_job_stderr, data);
|
||||||
}
|
}
|
||||||
pmap_put(uint64_t)(jobs, data->id, data);
|
|
||||||
rettv->vval.v_number = data->id;
|
rettv->vval.v_number = data->id;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -21821,6 +21825,7 @@ static inline void free_term_job_data_event(void **argv)
|
|||||||
dict_unref(data->self);
|
dict_unref(data->self);
|
||||||
}
|
}
|
||||||
queue_free(data->events);
|
queue_free(data->events);
|
||||||
|
pmap_del(uint64_t)(jobs, data->id);
|
||||||
xfree(data);
|
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);
|
process_job_event(data, data->on_exit, "exit", NULL, 0, status);
|
||||||
|
|
||||||
pmap_del(uint64_t)(jobs, data->id);
|
|
||||||
term_job_data_decref(data);
|
term_job_data_decref(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user