Title: [117025] trunk/Source/_javascript_Core
Revision
117025
Author
[email protected]
Date
2012-05-14 20:43:54 -0700 (Mon, 14 May 2012)

Log Message

Cannot login to iCloud
https://bugs.webkit.org/show_bug.cgi?id=86321

Reviewed by Filip Pizlo.

This is a bug introduced by bug#85853, we shouldn't allow assignment to
the prototype property of functions to be cached, since we need to clear
the cached inheritorID.

* runtime/JSFunction.cpp:
(JSC::JSFunction::put):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (117024 => 117025)


--- trunk/Source/_javascript_Core/ChangeLog	2012-05-15 03:42:19 UTC (rev 117024)
+++ trunk/Source/_javascript_Core/ChangeLog	2012-05-15 03:43:54 UTC (rev 117025)
@@ -1,3 +1,17 @@
+2012-05-14  Gavin Barraclough  <[email protected]>
+
+        Cannot login to iCloud
+        https://bugs.webkit.org/show_bug.cgi?id=86321
+
+        Reviewed by Filip Pizlo.
+
+        This is a bug introduced by bug#85853, we shouldn't allow assignment to
+        the prototype property of functions to be cached, since we need to clear
+        the cached inheritorID.
+
+        * runtime/JSFunction.cpp:
+        (JSC::JSFunction::put):
+
 2012-05-14  Michael Saboff  <[email protected]>
 
         Enh: Add the Ability to Disable / Enable _javascript_ GC Timer

Modified: trunk/Source/_javascript_Core/runtime/JSFunction.cpp (117024 => 117025)


--- trunk/Source/_javascript_Core/runtime/JSFunction.cpp	2012-05-15 03:42:19 UTC (rev 117024)
+++ trunk/Source/_javascript_Core/runtime/JSFunction.cpp	2012-05-15 03:43:54 UTC (rev 117025)
@@ -343,6 +343,10 @@
         PropertySlot slot;
         thisObject->methodTable()->getOwnPropertySlot(thisObject, exec, propertyName, slot);
         thisObject->m_cachedInheritorID.clear();
+        // Don't allow this to be cached, since a [[Put]] must clear m_cachedInheritorID.
+        PutPropertySlot dontCache;
+        Base::put(thisObject, exec, propertyName, value, dontCache);
+        return;
     }
     if (thisObject->jsExecutable()->isStrictMode() && (propertyName == exec->propertyNames().arguments || propertyName == exec->propertyNames().caller)) {
         // This will trigger the property to be reified, if this is not already the case!
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to