summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/API/OpaqueJSString.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/JavaScriptCore/API/OpaqueJSString.h')
-rw-r--r--Source/JavaScriptCore/API/OpaqueJSString.h23
1 files changed, 11 insertions, 12 deletions
diff --git a/Source/JavaScriptCore/API/OpaqueJSString.h b/Source/JavaScriptCore/API/OpaqueJSString.h
index 35543cdd6..36680388d 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&);
- UChar* characters() { return this ? m_characters : 0; }
- unsigned length() { return this ? m_length : 0; }
+ const UChar* characters() { return !!this ? m_string.characters() : 0; }
+ unsigned length() { return !!this ? m_string.length() : 0; }
String string() const;
JSC::Identifier identifier(JSC::JSGlobalData*) const;
@@ -58,25 +58,24 @@ private:
friend class WTF::ThreadSafeRefCounted<OpaqueJSString>;
OpaqueJSString()
- : m_characters(0)
- , m_length(0)
{
}
- OpaqueJSString(const UChar* characters, unsigned length)
- : m_length(length)
+ OpaqueJSString(const String& string)
{
- m_characters = new UChar[length];
- memcpy(m_characters, characters, length * sizeof(UChar));
+ // 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());
}
- ~OpaqueJSString()
+ OpaqueJSString(const UChar* characters, unsigned length)
{
- delete[] m_characters;
+ m_string = String(characters, length);
}
- UChar* m_characters;
- unsigned m_length;
+ String m_string;
};
#endif