diff --git a/Buffer.cpp b/Buffer.cpp index eeb84ed..0303b9b 100644 --- a/Buffer.cpp +++ b/Buffer.cpp @@ -13,15 +13,11 @@ Buffer::Buffer() noexcept { } -Buffer::Buffer(const std::vector &_buffer) noexcept: - buffer(_buffer) { -} - void Buffer::clear() noexcept { buffer.clear(); } -void Buffer::write(char * str, long length) noexcept { +void Buffer::write(char * str, unsigned long length) noexcept { buffer.insert(buffer.end(), str, str + length); } @@ -45,13 +41,7 @@ void Buffer::merge(const Buffer &other) noexcept { } std::string Buffer::bytes() const noexcept { - std::stringstream stream; - - unsigned long long size = buffer.size(); - for (unsigned long long i = 0; i < size; ++i) - stream << buffer[i]; - - return stream.str(); + return std::string(buffer.begin(), buffer.end()); } std::string Buffer::flush() noexcept { diff --git a/Buffer.hpp b/Buffer.hpp index 9b7a86f..6de42b2 100644 --- a/Buffer.hpp +++ b/Buffer.hpp @@ -8,8 +8,8 @@ */ #pragma once -#include -#include +#include +#include #include struct BufferOverflow : public std::exception {}; @@ -17,10 +17,9 @@ struct BufferOverflow : public std::exception {}; class Buffer { public: Buffer() noexcept; - Buffer(const std::vector&) noexcept; void clear() noexcept; - void write(char * str, long length) noexcept; + void write(char * str, unsigned long length) noexcept; void discard(unsigned long long n); unsigned long long size() const noexcept; @@ -102,5 +101,5 @@ class Buffer { ~Buffer(); private: - std::vector buffer; + std::deque buffer; }; diff --git a/buffer.cc b/buffer.cc index 3a666fe..295e899 100644 --- a/buffer.cc +++ b/buffer.cc @@ -720,7 +720,7 @@ static zend_function_entry buffer_object_methods[] = { }; static zend_object* buffer_object_create(zend_class_entry *ce) { - buffer_object *objval = (buffer_object*) ecalloc(1, sizeof(buffer_object) + zend_object_properties_size(ce)); + buffer_object *objval = (buffer_object*) emalloc(sizeof(buffer_object) + zend_object_properties_size(ce)); zend_object* ret = buffer_object_to_zend_object(objval);