mirror of
https://github.com/fish-shell/fish-shell.git
synced 2024-11-30 06:03:49 +08:00
Make io_buffer_t::out_buffer a raw pointer, initialize in io_buffer_t's constructor
This commit is contained in:
parent
9808829ece
commit
a63c0311bb
2
io.cpp
2
io.cpp
|
@ -133,7 +133,6 @@ io_buffer_t *io_buffer_t::create(bool is_input)
|
||||||
{
|
{
|
||||||
bool success = true;
|
bool success = true;
|
||||||
io_buffer_t *buffer_redirect = new io_buffer_t(is_input ? 0 : 1);
|
io_buffer_t *buffer_redirect = new io_buffer_t(is_input ? 0 : 1);
|
||||||
buffer_redirect->out_buffer_create();
|
|
||||||
buffer_redirect->is_input = is_input ? true : false;
|
buffer_redirect->is_input = is_input ? true : false;
|
||||||
|
|
||||||
if (exec_pipe(buffer_redirect->pipe_fd) == -1)
|
if (exec_pipe(buffer_redirect->pipe_fd) == -1)
|
||||||
|
@ -163,6 +162,7 @@ io_buffer_t *io_buffer_t::create(bool is_input)
|
||||||
io_buffer_t::~io_buffer_t()
|
io_buffer_t::~io_buffer_t()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
delete out_buffer;
|
||||||
/**
|
/**
|
||||||
If this is an input buffer, then io_read_buffer will not have
|
If this is an input buffer, then io_read_buffer will not have
|
||||||
been called, and we need to close the output fd as well.
|
been called, and we need to close the output fd as well.
|
||||||
|
|
14
io.h
14
io.h
|
@ -120,11 +120,11 @@ class io_buffer_t : public io_pipe_t
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
/** buffer to save output in */
|
/** buffer to save output in */
|
||||||
shared_ptr<std::vector<char> > out_buffer;
|
std::vector<char> *out_buffer;
|
||||||
|
|
||||||
io_buffer_t(int f):
|
io_buffer_t(int f):
|
||||||
io_pipe_t(f),
|
io_pipe_t(f),
|
||||||
out_buffer()
|
out_buffer(new std::vector<char>)
|
||||||
{
|
{
|
||||||
io_mode = IO_BUFFER;
|
io_mode = IO_BUFFER;
|
||||||
}
|
}
|
||||||
|
@ -134,36 +134,26 @@ public:
|
||||||
|
|
||||||
virtual ~io_buffer_t();
|
virtual ~io_buffer_t();
|
||||||
|
|
||||||
/** Function to create the output buffer */
|
|
||||||
void out_buffer_create()
|
|
||||||
{
|
|
||||||
out_buffer.reset(new std::vector<char>);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Function to append to the buffer */
|
/** Function to append to the buffer */
|
||||||
void out_buffer_append(const char *ptr, size_t count)
|
void out_buffer_append(const char *ptr, size_t count)
|
||||||
{
|
{
|
||||||
assert(out_buffer.get() != NULL);
|
|
||||||
out_buffer->insert(out_buffer->end(), ptr, ptr + count);
|
out_buffer->insert(out_buffer->end(), ptr, ptr + count);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Function to get a pointer to the buffer */
|
/** Function to get a pointer to the buffer */
|
||||||
char *out_buffer_ptr(void)
|
char *out_buffer_ptr(void)
|
||||||
{
|
{
|
||||||
assert(out_buffer.get() != NULL);
|
|
||||||
return out_buffer->empty() ? NULL : &out_buffer->at(0);
|
return out_buffer->empty() ? NULL : &out_buffer->at(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *out_buffer_ptr(void) const
|
const char *out_buffer_ptr(void) const
|
||||||
{
|
{
|
||||||
assert(out_buffer.get() != NULL);
|
|
||||||
return out_buffer->empty() ? NULL : &out_buffer->at(0);
|
return out_buffer->empty() ? NULL : &out_buffer->at(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Function to get the size of the buffer */
|
/** Function to get the size of the buffer */
|
||||||
size_t out_buffer_size(void) const
|
size_t out_buffer_size(void) const
|
||||||
{
|
{
|
||||||
assert(out_buffer.get() != NULL);
|
|
||||||
return out_buffer->size();
|
return out_buffer->size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user