diff --git a/io.cpp b/io.cpp index 14c48e1b1..6c42b6a33 100644 --- a/io.cpp +++ b/io.cpp @@ -133,7 +133,6 @@ io_buffer_t *io_buffer_t::create(bool is_input) { bool success = true; 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; 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() { + delete out_buffer; /** 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. diff --git a/io.h b/io.h index a50c54e53..084202629 100644 --- a/io.h +++ b/io.h @@ -120,11 +120,11 @@ class io_buffer_t : public io_pipe_t { private: /** buffer to save output in */ - shared_ptr > out_buffer; + std::vector *out_buffer; io_buffer_t(int f): io_pipe_t(f), - out_buffer() + out_buffer(new std::vector) { io_mode = IO_BUFFER; } @@ -134,36 +134,26 @@ public: virtual ~io_buffer_t(); - /** Function to create the output buffer */ - void out_buffer_create() - { - out_buffer.reset(new std::vector); - } - /** Function to append to the buffer */ void out_buffer_append(const char *ptr, size_t count) { - assert(out_buffer.get() != NULL); out_buffer->insert(out_buffer->end(), ptr, ptr + count); } /** Function to get a pointer to the buffer */ char *out_buffer_ptr(void) { - assert(out_buffer.get() != NULL); return out_buffer->empty() ? NULL : &out_buffer->at(0); } const char *out_buffer_ptr(void) const { - assert(out_buffer.get() != NULL); return out_buffer->empty() ? NULL : &out_buffer->at(0); } /** Function to get the size of the buffer */ size_t out_buffer_size(void) const { - assert(out_buffer.get() != NULL); return out_buffer->size(); }