Ambiguous operator[] after r127191 on some compiler
authorbenjamin@webkit.org <benjamin@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 30 Aug 2012 23:41:29 +0000 (23:41 +0000)
committerbenjamin@webkit.org <benjamin@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 30 Aug 2012 23:41:29 +0000 (23:41 +0000)
https://bugs.webkit.org/show_bug.cgi?id=95509

Patch by Benjamin Poulain <bpoulain@apple.com> on 2012-08-30
Reviewed by Simon Fraser.

Source/JavaScriptCore:

On some compilers, the operator[] conflicts with the Obj-C++ operators. This attempts to solve
the issue.

* runtime/JSString.h:
(JSC::jsSingleCharacterSubstring):
(JSC::jsString):
(JSC::jsSubstring8):
(JSC::jsSubstring):
(JSC::jsOwnedString):

Source/WTF:

* wtf/text/WTFString.h:
(WTF::String::characterAt): At this as a synonym to operator[] to attempt a build fix.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@127212 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/runtime/JSString.h
Source/WTF/ChangeLog
Source/WTF/wtf/text/WTFString.h

index a6bc4ad..87d257a 100644 (file)
@@ -1,3 +1,20 @@
+2012-08-30  Benjamin Poulain  <bpoulain@apple.com>
+
+        Ambiguous operator[]  after r127191 on some compiler
+        https://bugs.webkit.org/show_bug.cgi?id=95509
+
+        Reviewed by Simon Fraser.
+
+        On some compilers, the operator[] conflicts with the Obj-C++ operators. This attempts to solve
+        the issue.
+
+        * runtime/JSString.h:
+        (JSC::jsSingleCharacterSubstring):
+        (JSC::jsString):
+        (JSC::jsSubstring8):
+        (JSC::jsSubstring):
+        (JSC::jsOwnedString):
+
 2012-08-30  Geoffrey Garen  <ggaren@apple.com>
 
         Try to fix the Qt build: Remove the inline keyword at the declaration
index e009ecb..9f176ad 100644 (file)
@@ -347,7 +347,7 @@ namespace JSC {
     {
         JSGlobalData* globalData = &exec->globalData();
         ASSERT(offset < static_cast<unsigned>(s.length()));
-        UChar c = s[offset];
+        UChar c = s.characterAt(offset);
         if (c <= maxSingleCharacterString)
             return globalData->smallStrings.singleCharacterString(globalData, c);
         return JSString::create(*globalData, StringImpl::create(s.impl(), offset, 1));
@@ -396,7 +396,7 @@ namespace JSC {
         if (!size)
             return globalData->smallStrings.emptyString(globalData);
         if (size == 1) {
-            UChar c = s[0];
+            UChar c = s.characterAt(0);
             if (c <= maxSingleCharacterString)
                 return globalData->smallStrings.singleCharacterString(globalData, c);
         }
@@ -422,7 +422,7 @@ namespace JSC {
         if (!length)
             return globalData->smallStrings.emptyString(globalData);
         if (length == 1) {
-            UChar c = s[offset];
+            UChar c = s.characterAt(offset);
             if (c <= maxSingleCharacterString)
                 return globalData->smallStrings.singleCharacterString(globalData, c);
         }
@@ -437,7 +437,7 @@ namespace JSC {
         if (!length)
             return globalData->smallStrings.emptyString(globalData);
         if (length == 1) {
-            UChar c = s[offset];
+            UChar c = s.characterAt(offset);
             if (c <= maxSingleCharacterString)
                 return globalData->smallStrings.singleCharacterString(globalData, c);
         }
@@ -450,7 +450,7 @@ namespace JSC {
         if (!size)
             return globalData->smallStrings.emptyString(globalData);
         if (size == 1) {
-            UChar c = s[0];
+            UChar c = s.characterAt(0);
             if (c <= maxSingleCharacterString)
                 return globalData->smallStrings.singleCharacterString(globalData, c);
         }
index e54d761..1470b59 100644 (file)
@@ -1,3 +1,13 @@
+2012-08-30  Benjamin Poulain  <bpoulain@apple.com>
+
+        Ambiguous operator[]  after r127191 on some compiler
+        https://bugs.webkit.org/show_bug.cgi?id=95509
+
+        Reviewed by Simon Fraser.
+
+        * wtf/text/WTFString.h:
+        (WTF::String::characterAt): At this as a synonym to operator[] to attempt a build fix.
+
 2012-08-30  Mark Lam  <mark.lam@apple.com>
 
         Render unto #ifdef's that which belong to them.
index 3ab0adf..91d6d73 100644 (file)
@@ -449,6 +449,14 @@ public:
     WTF_EXPORT_STRING_API void show() const;
 #endif
 
+    // Workaround for a compiler bug. Use operator[] instead.
+    UChar characterAt(unsigned index) const
+    {
+        if (!m_impl || index >= m_impl->length())
+            return 0;
+        return (*m_impl)[index];
+    }
+
 private:
     RefPtr<StringImpl> m_impl;
 };