diff options
Diffstat (limited to 'libxsde/xsde/cxx/qname.cxx')
-rw-r--r-- | libxsde/xsde/cxx/qname.cxx | 20 |
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; |