summaryrefslogtreecommitdiff
path: root/libxsd/xsd/cxx/tree/buffer.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'libxsd/xsd/cxx/tree/buffer.hxx')
-rw-r--r--libxsd/xsd/cxx/tree/buffer.hxx9
1 files changed, 5 insertions, 4 deletions
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