diff options
author | Thiago de Arruda <tpadilha84@gmail.com> | 2014-06-17 10:02:23 -0300 |
---|---|---|
committer | Thiago de Arruda <tpadilha84@gmail.com> | 2014-06-18 11:36:07 -0300 |
commit | abc423983d85d5110fae21e661d36075379ce9c3 (patch) | |
tree | 9c7441c081522d47f77c4e68504bebdca0f0148c | |
parent | 287967a2c0bba99a95131d36b94c8a880aa3b62b (diff) | |
download | rneovim-abc423983d85d5110fae21e661d36075379ce9c3.tar.gz rneovim-abc423983d85d5110fae21e661d36075379ce9c3.tar.bz2 rneovim-abc423983d85d5110fae21e661d36075379ce9c3.zip |
job: Refactor job_write to receive WBuffer instances.
This was done to give more control over memory management to job_write callers.
-rw-r--r-- | src/nvim/eval.c | 7 | ||||
-rw-r--r-- | src/nvim/os/job.c | 7 | ||||
-rw-r--r-- | src/nvim/os/job.h | 2 |
3 files changed, 9 insertions, 7 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c index 1869b1eef9..d7deb2f322 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -10540,9 +10540,10 @@ static void f_job_write(typval_T *argvars, typval_T *rettv) EMSG(_(e_invjob)); } - rettv->vval.v_number = job_write(job, - xstrdup((char *)argvars[1].vval.v_string), - strlen((char *)argvars[1].vval.v_string)); + WBuffer *buf = wstream_new_buffer(xstrdup((char *)argvars[1].vval.v_string), + strlen((char *)argvars[1].vval.v_string), + free); + rettv->vval.v_number = job_write(job, buf); } /* diff --git a/src/nvim/os/job.c b/src/nvim/os/job.c index d51b67da53..0119e347dd 100644 --- a/src/nvim/os/job.c +++ b/src/nvim/os/job.c @@ -260,13 +260,12 @@ void job_stop(Job *job) /// returns when the write request was sent. /// /// @param job The Job instance -/// @param data Buffer containing the data to be written -/// @param len Size of the data +/// @param buffer The buffer which contains the data to be written /// @return true if the write request was successfully sent, false if writing /// to the job stream failed (possibly because the OS buffer is full) -bool job_write(Job *job, char *data, uint32_t len) +bool job_write(Job *job, WBuffer *buffer) { - return wstream_write(job->in, wstream_new_buffer(data, len, free)); + return wstream_write(job->in, buffer); } /// Sets the `defer` flag for a Job instance diff --git a/src/nvim/os/job.h b/src/nvim/os/job.h index f48218ffe7..e0ca615626 100644 --- a/src/nvim/os/job.h +++ b/src/nvim/os/job.h @@ -12,6 +12,8 @@ #include "nvim/os/rstream_defs.h" #include "nvim/os/event_defs.h" +#include "nvim/os/wstream.h" +#include "nvim/os/wstream_defs.h" #ifdef INCLUDE_GENERATED_DECLARATIONS # include "os/job.h.generated.h" |