diff options
-rw-r--r-- | src/pugixml.cpp | 21 |
1 files changed, 7 insertions, 14 deletions
diff --git a/src/pugixml.cpp b/src/pugixml.cpp index da0e9e4..413e342 100644 --- a/src/pugixml.cpp +++ b/src/pugixml.cpp @@ -221,15 +221,6 @@ PUGI__NS_BEGIN return static_cast<size_t>(end - s); #endif } - -#ifdef PUGIXML_WCHAR_MODE - // Convert string to wide string, assuming all symbols are ASCII - PUGI__FN void widen_ascii(wchar_t* dest, const char* source) - { - for (const char* i = source; *i; ++i) *dest++ = *i; - *dest = 0; - } -#endif PUGI__NS_END // auto_ptr-like object for exception recovery @@ -4563,13 +4554,15 @@ PUGI__NS_BEGIN // set value with conversion functions template <typename String, typename Header> - PUGI__FN bool set_value_buffer(String& dest, Header& header, uintptr_t header_mask, char (&buf)[128]) + PUGI__FN bool set_value_ascii(String& dest, Header& header, uintptr_t header_mask, char (&buf)[128]) { #ifdef PUGIXML_WCHAR_MODE char_t wbuf[128]; - impl::widen_ascii(wbuf, buf); - return strcpy_insitu(dest, header, header_mask, wbuf, strlength(wbuf)); + size_t offset = 0; + for (; buf[offset]; ++offset) wbuf[offset] = buf[offset]; + + return strcpy_insitu(dest, header, header_mask, wbuf, offset); #else return strcpy_insitu(dest, header, header_mask, buf, strlength(buf)); #endif @@ -4601,7 +4594,7 @@ PUGI__NS_BEGIN char buf[128]; sprintf(buf, "%.9g", value); - return set_value_buffer(dest, header, header_mask, buf); + return set_value_ascii(dest, header, header_mask, buf); } template <typename String, typename Header> @@ -4610,7 +4603,7 @@ PUGI__NS_BEGIN char buf[128]; sprintf(buf, "%.17g", value); - return set_value_buffer(dest, header, header_mask, buf); + return set_value_ascii(dest, header, header_mask, buf); } template <typename String, typename Header> |