aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--io.cpp2
-rw-r--r--io.h14
2 files changed, 3 insertions, 13 deletions
diff --git a/io.cpp b/io.cpp
index 14c48e1b..6c42b6a3 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 a50c54e5..08420262 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<std::vector<char> > out_buffer;
+ std::vector<char> *out_buffer;
io_buffer_t(int f):
io_pipe_t(f),
- out_buffer()
+ out_buffer(new std::vector<char>)
{
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<char>);
- }
-
/** 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();
}