Diff
Modified: trunk/Source/WebCore/ChangeLog (93557 => 93558)
--- trunk/Source/WebCore/ChangeLog 2011-08-22 23:24:18 UTC (rev 93557)
+++ trunk/Source/WebCore/ChangeLog 2011-08-22 23:30:10 UTC (rev 93558)
@@ -1,3 +1,23 @@
+2011-08-22 David Levin <[email protected]>
+
+ Fix usage of PassRefPtr in postMessage and structured clone code.
+ https://bugs.webkit.org/show_bug.cgi?id=66725
+
+ Reviewed by Darin Adler.
+
+ No new functionality exposed so no new tests.
+
+ * bindings/js/JSDOMWindowCustom.cpp:
+ (WebCore::JSDOMWindow::postMessage): Changed PassRefPtr to RefPtr and added release when handed off.
+ * bindings/js/JSMessageEventCustom.cpp:
+ (WebCore::JSMessageEvent::initMessageEvent): Ditto.
+ * bindings/js/JSMessagePortCustom.h:
+ (WebCore::handlePostMessage): Ditto.
+ * bindings/js/SerializedScriptValue.cpp:
+ (WebCore::SerializedScriptValue::create): Ditto.
+ * workers/SharedWorkerContext.cpp:
+ (WebCore::createConnectEvent): Added release() when a RefPtr is returned.
+
2011-08-22 Luke Macpherson <[email protected]>
Implement cast between CSSPrimitiveValue and EBackfaceVisibility, use in CSSStyleSelector::applyProperty.
Property changes on: trunk/Source/WebCore/ChangeLog
___________________________________________________________________
Deleted: svn:executable
Modified: trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp (93557 => 93558)
--- trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp 2011-08-22 23:24:18 UTC (rev 93557)
+++ trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp 2011-08-22 23:30:10 UTC (rev 93558)
@@ -699,7 +699,7 @@
JSValue JSDOMWindow::postMessage(ExecState* exec)
{
- PassRefPtr<SerializedScriptValue> message = SerializedScriptValue::create(exec, exec->argument(0));
+ RefPtr<SerializedScriptValue> message = SerializedScriptValue::create(exec, exec->argument(0));
if (exec->hadException())
return jsUndefined();
@@ -715,7 +715,7 @@
return jsUndefined();
ExceptionCode ec = 0;
- impl()->postMessage(message, &messagePorts, targetOrigin, activeDOMWindow(exec), ec);
+ impl()->postMessage(message.release(), &messagePorts, targetOrigin, activeDOMWindow(exec), ec);
setDOMException(exec, ec);
return jsUndefined();
Modified: trunk/Source/WebCore/bindings/js/JSMessageEventCustom.cpp (93557 => 93558)
--- trunk/Source/WebCore/bindings/js/JSMessageEventCustom.cpp 2011-08-22 23:24:18 UTC (rev 93557)
+++ trunk/Source/WebCore/bindings/js/JSMessageEventCustom.cpp 2011-08-22 23:30:10 UTC (rev 93558)
@@ -59,7 +59,7 @@
const UString& typeArg = exec->argument(0).toString(exec);
bool canBubbleArg = exec->argument(1).toBoolean(exec);
bool cancelableArg = exec->argument(2).toBoolean(exec);
- PassRefPtr<SerializedScriptValue> dataArg = SerializedScriptValue::create(exec, exec->argument(3));
+ RefPtr<SerializedScriptValue> dataArg = SerializedScriptValue::create(exec, exec->argument(3));
if (exec->hadException())
return jsUndefined();
const UString& originArg = exec->argument(4).toString(exec);
@@ -74,7 +74,7 @@
}
MessageEvent* event = static_cast<MessageEvent*>(this->impl());
- event->initMessageEvent(ustringToAtomicString(typeArg), canBubbleArg, cancelableArg, dataArg, ustringToString(originArg), ustringToString(lastEventIdArg), sourceArg, messagePorts.release());
+ event->initMessageEvent(ustringToAtomicString(typeArg), canBubbleArg, cancelableArg, dataArg.release(), ustringToString(originArg), ustringToString(lastEventIdArg), sourceArg, messagePorts.release());
return jsUndefined();
}
Modified: trunk/Source/WebCore/bindings/js/JSMessagePortCustom.h (93557 => 93558)
--- trunk/Source/WebCore/bindings/js/JSMessagePortCustom.h 2011-08-22 23:24:18 UTC (rev 93557)
+++ trunk/Source/WebCore/bindings/js/JSMessagePortCustom.h 2011-08-22 23:30:10 UTC (rev 93558)
@@ -48,14 +48,14 @@
template <typename T>
inline JSC::JSValue handlePostMessage(JSC::ExecState* exec, T* impl)
{
- PassRefPtr<SerializedScriptValue> message = SerializedScriptValue::create(exec, exec->argument(0));
+ RefPtr<SerializedScriptValue> message = SerializedScriptValue::create(exec, exec->argument(0));
MessagePortArray portArray;
fillMessagePortArray(exec, exec->argument(1), portArray);
if (exec->hadException())
return JSC::jsUndefined();
ExceptionCode ec = 0;
- impl->postMessage(message, &portArray, ec);
+ impl->postMessage(message.release(), &portArray, ec);
setDOMException(exec, ec);
return JSC::jsUndefined();
}
Modified: trunk/Source/WebCore/bindings/js/SerializedScriptValue.cpp (93557 => 93558)
--- trunk/Source/WebCore/bindings/js/SerializedScriptValue.cpp 2011-08-22 23:24:18 UTC (rev 93557)
+++ trunk/Source/WebCore/bindings/js/SerializedScriptValue.cpp 2011-08-22 23:30:10 UTC (rev 93558)
@@ -1371,7 +1371,7 @@
ExecState* exec = toJS(originContext);
APIEntryShim entryShim(exec);
JSValue value = toJS(exec, apiValue);
- PassRefPtr<SerializedScriptValue> serializedValue = SerializedScriptValue::create(exec, value);
+ RefPtr<SerializedScriptValue> serializedValue = SerializedScriptValue::create(exec, value);
if (exec->hadException()) {
if (exception)
*exception = toRef(exec, exec->exception());
@@ -1379,7 +1379,7 @@
return 0;
}
ASSERT(serializedValue);
- return serializedValue;
+ return serializedValue.release();
}
String SerializedScriptValue::toString()
Modified: trunk/Source/WebCore/workers/SharedWorkerContext.cpp (93557 => 93558)
--- trunk/Source/WebCore/workers/SharedWorkerContext.cpp 2011-08-22 23:24:18 UTC (rev 93557)
+++ trunk/Source/WebCore/workers/SharedWorkerContext.cpp 2011-08-22 23:30:10 UTC (rev 93558)
@@ -46,7 +46,7 @@
{
RefPtr<MessageEvent> event = MessageEvent::create(adoptPtr(new MessagePortArray(1, port)));
event->initEvent(eventNames().connectEvent, false, false);
- return event;
+ return event.release();
}
SharedWorkerContext::SharedWorkerContext(const String& name, const KURL& url, const String& userAgent, SharedWorkerThread* thread)