diff options
Diffstat (limited to 'cpp/src/qpid/framing')
| -rw-r--r-- | cpp/src/qpid/framing/Buffer.cpp | 7 | ||||
| -rw-r--r-- | cpp/src/qpid/framing/Buffer.h | 2 |
2 files changed, 7 insertions, 2 deletions
diff --git a/cpp/src/qpid/framing/Buffer.cpp b/cpp/src/qpid/framing/Buffer.cpp index b7c17fa86f..05e9be83a9 100644 --- a/cpp/src/qpid/framing/Buffer.cpp +++ b/cpp/src/qpid/framing/Buffer.cpp @@ -18,12 +18,15 @@ #include "qpid/framing/Buffer.h" #include "qpid/framing/FieldTable.h" -qpid::framing::Buffer::Buffer(u_int32_t _size) : size(_size), position(0), limit(_size){ +qpid::framing::Buffer::Buffer(u_int32_t _size) : size(_size), owner(true), position(0), limit(_size){ data = new char[size]; } +qpid::framing::Buffer::Buffer(char* _data, u_int32_t _size) : size(_size), owner(false), data(_data), position(0), limit(_size){ +} + qpid::framing::Buffer::~Buffer(){ - delete[] data; + if(owner) delete[] data; } void qpid::framing::Buffer::flip(){ diff --git a/cpp/src/qpid/framing/Buffer.h b/cpp/src/qpid/framing/Buffer.h index 1698144908..8eb92a1d27 100644 --- a/cpp/src/qpid/framing/Buffer.h +++ b/cpp/src/qpid/framing/Buffer.h @@ -28,6 +28,7 @@ class FieldTable; class Buffer { const u_int32_t size; + const bool owner;//indicates whether the data is owned by this instance char* data; u_int32_t position; u_int32_t limit; @@ -37,6 +38,7 @@ class Buffer public: Buffer(u_int32_t size); + Buffer(char* data, u_int32_t size); ~Buffer(); void flip(); |
