diff options
Diffstat (limited to 'libxsde/xsde/cxx/serializer/validating/qname.cxx')
-rw-r--r-- | libxsde/xsde/cxx/serializer/validating/qname.cxx | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/libxsde/xsde/cxx/serializer/validating/qname.cxx b/libxsde/xsde/cxx/serializer/validating/qname.cxx index a51685e..cca29d6 100644 --- a/libxsde/xsde/cxx/serializer/validating/qname.cxx +++ b/libxsde/xsde/cxx/serializer/validating/qname.cxx @@ -9,6 +9,10 @@ #include <xsde/cxx/serializer/validating/qname.hxx> +#ifdef XSDE_CUSTOM_ALLOCATOR +# include <xsde/cxx/allocator.hxx> +#endif + namespace xsde { namespace cxx @@ -20,8 +24,16 @@ namespace xsde qname_simpl:: ~qname_simpl () { - if (free_) - delete const_cast<qname*> (value_); + if (free_ && value_) + { + qname* v = const_cast<qname*> (value_); +#ifndef XSDE_CUSTOM_ALLOCATOR + delete v; +#else + v->~qname (); + cxx::free (v); +#endif + } } void qname_simpl:: @@ -69,7 +81,13 @@ namespace xsde if (free_) { - delete const_cast<qname*> (value_); + qname* v = const_cast<qname*> (value_); +#ifndef XSDE_CUSTOM_ALLOCATOR + delete v; +#else + v->~qname (); + cxx::free (v); +#endif value_ = 0; } } |