mirror of
https://github.com/neovim/neovim.git
synced 2025-09-13 06:48:17 +00:00
job: Refactor job_write to receive WBuffer instances.
This was done to give more control over memory management to job_write callers.
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@@ -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
|
||||
|
@@ -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"
|
||||
|
Reference in New Issue
Block a user