Changeset 33374
- Timestamp:
- 05/13/08 02:46:47 (6 months ago)
- Location:
- trunk/JavaScriptCore
- Files:
-
- 5 modified
-
API/JSClassRef.cpp (modified) (3 diffs)
-
API/JSStringRef.cpp (modified) (1 diff)
-
ChangeLog (modified) (1 diff)
-
kjs/ustring.cpp (modified) (1 diff)
-
kjs/ustring.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/API/JSClassRef.cpp
r33038 r33374 40 40 41 41 OpaqueJSClass::OpaqueJSClass(const JSClassDefinition* definition, OpaqueJSClass* protoClass) 42 // FIXME: <rdar://problem/4949018> 43 : className(definition->className) 42 : className(UString::Rep::createFromUTF8(definition->className)) 44 43 , parentClass(definition->parentClass) 45 44 , prototypeClass(0) … … 62 61 staticValues = new StaticValuesTable(); 63 62 while (staticValue->name) { 64 // FIXME: <rdar://problem/4949018> 65 staticValues->add(Identifier(staticValue->name).ustring().rep(), 63 staticValues->add(Identifier(UString::Rep::createFromUTF8(staticValue->name).get()).ustring().rep(), 66 64 new StaticValueEntry(staticValue->getProperty, staticValue->setProperty, staticValue->attributes)); 67 65 ++staticValue; … … 72 70 staticFunctions = new StaticFunctionsTable(); 73 71 while (staticFunction->name) { 74 // FIXME: <rdar://problem/4949018> 75 staticFunctions->add(Identifier(staticFunction->name).ustring().rep(), 72 staticFunctions->add(Identifier(UString::Rep::createFromUTF8(staticFunction->name).get()).ustring().rep(), 76 73 new StaticFunctionEntry(staticFunction->callAsFunction, staticFunction->attributes)); 77 74 ++staticFunction; -
trunk/JavaScriptCore/API/JSStringRef.cpp
r30942 r33374 52 52 JSLock lock; 53 53 54 size_t length = strlen(string); 55 Vector<UChar, 1024> buffer(length); 56 UChar* p = buffer.data(); 57 if (conversionOK != convertUTF8ToUTF16(&string, string + length, &p, p + length)) 54 RefPtr<UString::Rep> result = UString::Rep::createFromUTF8(string); 55 if (result.get() == &UString::Rep::null) 58 56 return 0; 59 57 60 return toRef( UString(buffer.data(), p - buffer.data()).rep()->ref());58 return toRef(result.release().releaseRef()); 61 59 } 62 60 -
trunk/JavaScriptCore/ChangeLog
r33053 r33374 1 2008-05-13 Alexey Proskuryakov <ap@webkit.org> 2 3 Reviewed by Geoffrey Garen. 4 5 <rdar://problem/4949018> JavaScriptCore API claims to work with UTF8 strings, but only works 6 with ASCII strings 7 8 * kjs/ustring.h: 9 * kjs/ustring.cpp: 10 (KJS::UString::Rep::createFromUTF8): 11 Added. Implementation adapted from JSStringCreateWithUTF8CString(). 12 13 * API/JSStringRef.cpp: 14 (JSStringCreateWithUTF8CString): 15 * API/JSClassRef.cpp: 16 (OpaqueJSClass::OpaqueJSClass): 17 Use UString::Rep::createFromUTF8(). 18 1 19 2008-05-12 Mark Rowe <mrowe@apple.com> 2 20 -
trunk/JavaScriptCore/kjs/ustring.cpp
r32609 r33374 237 237 // steal the single reference this Rep was created with 238 238 return adoptRef(r); 239 } 240 241 PassRefPtr<UString::Rep> UString::Rep::createFromUTF8(const char* string) 242 { 243 if (!string) 244 return &UString::Rep::null; 245 246 size_t length = strlen(string); 247 Vector<UChar, 1024> buffer(length); 248 UChar* p = buffer.data(); 249 if (conversionOK != convertUTF8ToUTF16(&string, string + length, &p, p + length)) 250 return &UString::Rep::null; 251 252 return UString::Rep::createCopying(buffer.data(), p - buffer.data()); 239 253 } 240 254 -
trunk/JavaScriptCore/kjs/ustring.h
r33038 r33374 95 95 static PassRefPtr<Rep> create(PassRefPtr<Rep> base, int offset, int length); 96 96 97 // Constructs a string from a UTF-8 string, using strict conversion (see comments in UTF8.h). 98 // Returns UString::Rep::null for null input or conversion failure. 99 static PassRefPtr<Rep> createFromUTF8(const char*); 100 97 101 void destroy(); 98 102