Changeset 24919 in webkit for trunk/JavaScriptCore/kjs/string_object.cpp
- Timestamp:
- Aug 7, 2007, 5:45:39 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/kjs/string_object.cpp
r24881 r24919 694 694 case ToLowerCase: 695 695 case ToLocaleLowerCase: { // FIXME: See http://www.unicode.org/Public/UNIDATA/SpecialCasing.txt for locale-sensitive mappings that aren't implemented. 696 u = s; 697 u.copyForWriting(); 698 ::UChar* dataPtr = reinterpret_cast< ::UChar*>(u.rep()->data()); 699 ::UChar* destIfNeeded; 700 701 int len = Unicode::toLower(dataPtr, u.size(), destIfNeeded); 702 if (len >= 0) 703 result = jsString(UString(reinterpret_cast<UChar*>(destIfNeeded ? destIfNeeded : dataPtr), len)); 704 else 705 result = jsString(s); 706 707 free(destIfNeeded); 708 break; 696 StringImp* sVal = thisObj->inherits(&StringInstance::info) 697 ? static_cast<StringInstance*>(thisObj)->internalValue() 698 : static_cast<StringImp*>(jsString(s)); 699 int ssize = s.size(); 700 if (!ssize) 701 return sVal; 702 Vector< ::UChar> buffer(ssize); 703 bool error; 704 int length = Unicode::toLower(buffer.data(), ssize, reinterpret_cast<const ::UChar*>(s.data()), ssize, &error); 705 if (error) { 706 buffer.resize(length); 707 length = Unicode::toLower(buffer.data(), length, reinterpret_cast<const ::UChar*>(s.data()), ssize, &error); 708 if (error) 709 return sVal; 710 } 711 if (length == ssize && memcmp(buffer.data(), s.data(), length * sizeof(UChar)) == 0) 712 return sVal; 713 return jsString(UString(reinterpret_cast<UChar*>(buffer.releaseBuffer()), length, false)); 709 714 } 710 715 case ToUpperCase: 711 716 case ToLocaleUpperCase: { // FIXME: See http://www.unicode.org/Public/UNIDATA/SpecialCasing.txt for locale-sensitive mappings that aren't implemented. 712 u = s; 713 u.copyForWriting(); 714 ::UChar* dataPtr = reinterpret_cast< ::UChar*>(u.rep()->data()); 715 ::UChar* destIfNeeded; 716 717 int len = Unicode::toUpper(dataPtr, u.size(), destIfNeeded); 718 if (len >= 0) 719 result = jsString(UString(reinterpret_cast<UChar *>(destIfNeeded ? destIfNeeded : dataPtr), len)); 720 else 721 result = jsString(s); 722 723 free(destIfNeeded); 724 break; 717 StringImp* sVal = thisObj->inherits(&StringInstance::info) 718 ? static_cast<StringInstance*>(thisObj)->internalValue() 719 : static_cast<StringImp*>(jsString(s)); 720 int ssize = s.size(); 721 if (!ssize) 722 return sVal; 723 Vector< ::UChar> buffer(ssize); 724 bool error; 725 int length = Unicode::toUpper(buffer.data(), ssize, reinterpret_cast<const ::UChar*>(s.data()), ssize, &error); 726 if (error) { 727 buffer.resize(length); 728 length = Unicode::toUpper(buffer.data(), length, reinterpret_cast<const ::UChar*>(s.data()), ssize, &error); 729 if (error) 730 return sVal; 731 } 732 if (length == ssize && memcmp(buffer.data(), s.data(), length * sizeof(UChar)) == 0) 733 return sVal; 734 return jsString(UString(reinterpret_cast<UChar*>(buffer.releaseBuffer()), length, false)); 725 735 } 726 736 case LocaleCompare:
Note:
See TracChangeset
for help on using the changeset viewer.