From e6d52ecfa2379b1f7f3007e65ded5e4076abc5e9 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Fri, 8 Jan 2010 17:01:08 +0200 Subject: Add support in buffer class for reusing existing buffer without freeing it --- libxsd/xsd/cxx/tree/buffer.hxx | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'libxsd/xsd/cxx/tree/buffer.hxx') diff --git a/libxsd/xsd/cxx/tree/buffer.hxx b/libxsd/xsd/cxx/tree/buffer.hxx index 45a1a82..24da287 100644 --- a/libxsd/xsd/cxx/tree/buffer.hxx +++ b/libxsd/xsd/cxx/tree/buffer.hxx @@ -45,12 +45,12 @@ namespace xsd virtual ~buffer_base () { - if (data_) + if (free_ && data_) operator delete (data_); } buffer_base () - : data_ (0), size_ (0), capacity_ (0) + : data_ (0), size_ (0), capacity_ (0), free_ (true) { } @@ -58,6 +58,7 @@ namespace xsd char* data_; size_t size_; size_t capacity_; + bool free_; }; //@endcond @@ -138,13 +139,13 @@ namespace xsd buffer (const void* data, size_t size, size_t capacity); /** - * @brief Assume ownership of the specified %buffer. + * @brief Reuse an existing %buffer. * * If the @a assume_ownership argument is true, the %buffer will * assume ownership of @a data and will release the memory * by calling @c operator @c delete(). * - * @param data A %buffer to assume ownership of. + * @param data A %buffer to reuse. * @param size A %buffer size in bytes. * @param capacity A %buffer capacity in bytes. * @param assume_ownership A boolean value indication whether to -- cgit v1.1