aboutsummaryrefslogtreecommitdiff
path: root/libxsde/xsde/cxx/qname.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'libxsde/xsde/cxx/qname.cxx')
-rw-r--r--libxsde/xsde/cxx/qname.cxx20
1 files changed, 11 insertions, 9 deletions
diff --git a/libxsde/xsde/cxx/qname.cxx b/libxsde/xsde/cxx/qname.cxx
index bd5e1c2..be196be 100644
--- a/libxsde/xsde/cxx/qname.cxx
+++ b/libxsde/xsde/cxx/qname.cxx
@@ -3,9 +3,7 @@
// copyright : Copyright (c) 2005-2010 Code Synthesis Tools CC
// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-#include <string.h> // strlen, memcpy
-#include <stddef.h> // size_t
-
+#include <xsde/cxx/strdupx.hxx>
#include <xsde/cxx/qname.hxx>
namespace xsde
@@ -19,18 +17,20 @@ namespace xsde
#endif
prefix_copy (const char* prefix)
{
+#ifndef XSDE_CUSTOM_ALLOCATOR
delete[] prefix_;
+#else
+ cxx::free (prefix_);
+#endif
if (prefix)
{
- size_t size = strlen (prefix) + 1;
- prefix_ = new char[size];
+ prefix_ = strdupx (prefix);
#ifndef XSDE_EXCEPTIONS
if (prefix_ == 0)
return error_no_memory;
#endif
- memcpy (prefix_, prefix, size);
}
else
prefix_ = 0;
@@ -47,18 +47,20 @@ namespace xsde
#endif
name_copy (const char* name)
{
+#ifndef XSDE_CUSTOM_ALLOCATOR
delete[] name_;
+#else
+ cxx::free (name_);
+#endif
if (name)
{
- size_t size = strlen (name) + 1;
- name_ = new char[size];
+ name_ = strdupx (name);
#ifndef XSDE_EXCEPTIONS
if (name_ == 0)
return error_no_memory;
#endif
- memcpy (name_, name, size);
}
else
name_ = 0;