diff options
Diffstat (limited to 'Source/JavaScriptCore/API/OpaqueJSString.h')
-rw-r--r-- | Source/JavaScriptCore/API/OpaqueJSString.h | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/Source/JavaScriptCore/API/OpaqueJSString.h b/Source/JavaScriptCore/API/OpaqueJSString.h index 36680388d..35543cdd6 100644 --- a/Source/JavaScriptCore/API/OpaqueJSString.h +++ b/Source/JavaScriptCore/API/OpaqueJSString.h @@ -48,8 +48,8 @@ struct OpaqueJSString : public ThreadSafeRefCounted<OpaqueJSString> { JS_EXPORT_PRIVATE static PassRefPtr<OpaqueJSString> create(const String&); - const UChar* characters() { return !!this ? m_string.characters() : 0; } - unsigned length() { return !!this ? m_string.length() : 0; } + UChar* characters() { return this ? m_characters : 0; } + unsigned length() { return this ? m_length : 0; } String string() const; JSC::Identifier identifier(JSC::JSGlobalData*) const; @@ -58,24 +58,25 @@ private: friend class WTF::ThreadSafeRefCounted<OpaqueJSString>; OpaqueJSString() + : m_characters(0) + , m_length(0) { } - OpaqueJSString(const String& string) + OpaqueJSString(const UChar* characters, unsigned length) + : m_length(length) { - // Make a copy of the source string. - if (string.is8Bit()) - m_string = String(string.characters8(), string.length()); - else - m_string = String(string.characters16(), string.length()); + m_characters = new UChar[length]; + memcpy(m_characters, characters, length * sizeof(UChar)); } - OpaqueJSString(const UChar* characters, unsigned length) + ~OpaqueJSString() { - m_string = String(characters, length); + delete[] m_characters; } - String m_string; + UChar* m_characters; + unsigned m_length; }; #endif |