diff options
Diffstat (limited to 'xsde/cxx/serializer/serializer-source.cxx')
-rw-r--r-- | xsde/cxx/serializer/serializer-source.cxx | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/xsde/cxx/serializer/serializer-source.cxx b/xsde/cxx/serializer/serializer-source.cxx index a5765a0..1dbe496 100644 --- a/xsde/cxx/serializer/serializer-source.cxx +++ b/xsde/cxx/serializer/serializer-source.cxx @@ -1386,10 +1386,16 @@ namespace CXX << "r = this->_start_element (ns, name);" << endl << "if (free)" - << "{" - << "delete[] ns;" - << "delete[] name;" - << "}" + << "{"; + + if (!custom_alloc) + os << "delete[] ns;" + << "delete[] name;"; + else + os << "::xsde::cxx::free (ns);" + << "::xsde::cxx::free (name);"; + + os << "}" << "if (!r)" << endl << "return;" << endl @@ -1640,10 +1646,16 @@ namespace CXX << "r = this->_start_attribute (ns, name);" << endl << "if (free)" - << "{" - << "delete[] ns;" - << "delete[] name;" - << "}" + << "{"; + + if (!custom_alloc) + os << "delete[] ns;" + << "delete[] name;"; + else + os << "::xsde::cxx::free (ns);" + << "::xsde::cxx::free (name);"; + + os << "}" << "if (!r)" << endl << "return;" << endl |