aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/eval.c1
-rw-r--r--src/nvim/os/channel.c3
-rw-r--r--src/nvim/os/job.c5
3 files changed, 6 insertions, 3 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index 3213e36f81..7300e60b1a 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -10474,6 +10474,7 @@ static void f_job_start(typval_T *argvars, typval_T *rettv)
on_job_stderr,
on_job_exit,
true,
+ 0,
&rettv->vval.v_number);
if (rettv->vval.v_number <= 0) {
diff --git a/src/nvim/os/channel.c b/src/nvim/os/channel.c
index 653f09756a..f859544663 100644
--- a/src/nvim/os/channel.c
+++ b/src/nvim/os/channel.c
@@ -80,6 +80,7 @@ bool channel_from_job(char **argv)
job_err,
job_exit,
true,
+ 0,
&status);
if (status <= 0) {
@@ -104,7 +105,7 @@ void channel_from_stream(uv_stream_t *stream)
rstream_set_stream(channel->data.streams.read, stream);
rstream_start(channel->data.streams.read);
// write stream
- channel->data.streams.write = wstream_new(1024 * 1024);
+ channel->data.streams.write = wstream_new(0);
wstream_set_stream(channel->data.streams.write, stream);
channel->data.streams.uv = stream;
}
diff --git a/src/nvim/os/job.c b/src/nvim/os/job.c
index b369004e47..dcf50243a9 100644
--- a/src/nvim/os/job.c
+++ b/src/nvim/os/job.c
@@ -21,7 +21,6 @@
#define EXIT_TIMEOUT 25
#define MAX_RUNNING_JOBS 100
#define JOB_BUFFER_SIZE 1024
-#define JOB_WRITE_MAXMEM 1024 * 1024
struct job {
// Job id the index in the job table plus one.
@@ -131,6 +130,7 @@ void job_teardown()
/// @param exit_cb Callback that will be invoked when the job exits
/// @param defer If the job callbacks invocation should be deferred to vim
/// main loop
+/// @param maxmem Maximum amount of memory used by the job WStream
/// @param[out] The job id if the job started successfully, 0 if the job table
/// is full, -1 if the program could not be executed.
/// @return The job pointer if the job started successfully, NULL otherwise
@@ -140,6 +140,7 @@ Job *job_start(char **argv,
rstream_cb stderr_cb,
job_exit_cb job_exit_cb,
bool defer,
+ size_t maxmem,
int *status)
{
int i;
@@ -210,7 +211,7 @@ Job *job_start(char **argv,
handle_set_job((uv_handle_t *)&job->proc_stdout, job);
handle_set_job((uv_handle_t *)&job->proc_stderr, job);
- job->in = wstream_new(JOB_WRITE_MAXMEM);
+ job->in = wstream_new(maxmem);
wstream_set_stream(job->in, (uv_stream_t *)&job->proc_stdin);
// Start the readable streams
job->out = rstream_new(read_cb, JOB_BUFFER_SIZE, job, defer);