Changeset 116575 in webkit
- Timestamp:
- May 9, 2012 4:56:05 PM (12 years ago)
- Location:
- trunk/Source/JavaScriptCore
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/API/JSClassRef.cpp
r115545 r116575 210 210 OpaqueJSClassContextData& jsClassData = contextData(exec); 211 211 212 if (!jsClassData.cachedPrototype) { 213 // Recursive, but should be good enough for our purposes 214 jsClassData.cachedPrototype = PassWeak<JSObject>(JSCallbackObject<JSNonFinalObject>::create(exec, exec->lexicalGlobalObject(), exec->lexicalGlobalObject()->callbackObjectStructure(), prototypeClass, &jsClassData), 0); // set jsClassData as the object's private data, so it can clear our reference on destruction 215 if (parentClass) { 216 if (JSObject* prototype = parentClass->prototype(exec)) 217 jsClassData.cachedPrototype->setPrototype(exec->globalData(), prototype); 218 } 219 } 220 return jsClassData.cachedPrototype.get(); 221 } 212 if (JSObject* prototype = jsClassData.cachedPrototype.get()) 213 return prototype; 214 215 // Recursive, but should be good enough for our purposes 216 prototype = JSCallbackObject<JSNonFinalObject>::create(exec, exec->lexicalGlobalObject(), exec->lexicalGlobalObject()->callbackObjectStructure(), prototypeClass, &jsClassData); // set jsClassData as the object's private data, so it can clear our reference on destruction 217 if (parentClass) { 218 if (JSObject* parentPrototype = parentClass->prototype(exec)) 219 prototype->setPrototype(exec->globalData(), parentPrototype); 220 } 221 222 jsClassData.cachedPrototype = PassWeak<JSObject>(prototype, 0); 223 return prototype; 224 } -
trunk/Source/JavaScriptCore/ChangeLog
r116565 r116575 1 2012-05-09 Gavin Barraclough <barraclough@apple.com> 2 3 GC race condition in OpaqueJSClass::prototype 4 https://bugs.webkit.org/show_bug.cgi?id=86034 5 6 Reviewed by Filip Pizlo. 7 8 The bug here is basically: 9 if (weakref) weakref->method() 10 where a GC may occur between the if & the method call. 11 12 * API/JSClassRef.cpp: 13 (OpaqueJSClass::prototype): 14 1 15 2012-05-09 Mark Hahnenberg <mhahnenberg@apple.com> 2 16
Note: See TracChangeset
for help on using the changeset viewer.