aboutsummaryrefslogtreecommitdiff
path: root/xsde/cxx/serializer/serializer-source.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'xsde/cxx/serializer/serializer-source.cxx')
-rw-r--r--xsde/cxx/serializer/serializer-source.cxx28
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