aboutsummaryrefslogtreecommitdiff
path: root/xsde/cxx/serializer/element-validation-source.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'xsde/cxx/serializer/element-validation-source.cxx')
-rw-r--r--xsde/cxx/serializer/element-validation-source.cxx16
1 files changed, 12 insertions, 4 deletions
diff --git a/xsde/cxx/serializer/element-validation-source.cxx b/xsde/cxx/serializer/element-validation-source.cxx
index b39fed7..ea5fec2 100644
--- a/xsde/cxx/serializer/element-validation-source.cxx
+++ b/xsde/cxx/serializer/element-validation-source.cxx
@@ -736,6 +736,7 @@ namespace CXX
<< "this->_start_element (ns, name);"
<< endl;
else
+ {
os << "bool r;"
<< "if (ns == 0 || *ns == '\\0')" << endl
<< "r = this->_start_element (name);"
@@ -743,13 +744,20 @@ 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;
+ }
os << "this->" << eserialize (a) << " ();"
<< endl