diff options
author | Kristian Monsen <kristianm@google.com> | 2011-02-17 16:43:20 +0000 |
---|---|---|
committer | Kristian Monsen <kristianm@google.com> | 2011-03-08 13:54:10 +0000 |
commit | deb796f509e2ad13b4ef4c01b1a1e707b4e762ee (patch) | |
tree | 6a9931d7ea8297ecdc85324bd27b712d6e7ee34c /WebCore | |
parent | 24b320d351369a76f0bf7ac2bad37f5dfd4681cd (diff) | |
download | external_webkit-deb796f509e2ad13b4ef4c01b1a1e707b4e762ee.zip external_webkit-deb796f509e2ad13b4ef4c01b1a1e707b4e762ee.tar.gz external_webkit-deb796f509e2ad13b4ef4c01b1a1e707b4e762ee.tar.bz2 |
Fix for bug 3324285 jsc::bindings::convertValueToNPVariant fails to findroot() and passes objects as npvariant_void
Also trying lexicalGlobalObject as root object, the comment for
lexicalGlobalObject says:
// Global object in which the currently executing code was defined.
// Differs from dynamicGlobalObject() during function calls across web browser frames.
I'm guessing that is the case here.
Webkit bug:
https://bugs.webkit.org/show_bug.cgi?id=55216
Change-Id: I61b3df93261e3688f022cde058845b1e3dfedb38
Diffstat (limited to 'WebCore')
-rw-r--r-- | WebCore/bridge/c/c_utility.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/WebCore/bridge/c/c_utility.cpp b/WebCore/bridge/c/c_utility.cpp index e786896..ea970eb 100644 --- a/WebCore/bridge/c/c_utility.cpp +++ b/WebCore/bridge/c/c_utility.cpp @@ -94,9 +94,15 @@ void convertValueToNPVariant(ExecState* exec, JSValue value, NPVariant* result) OBJECT_TO_NPVARIANT(obj, *result); } } else { +#ifdef ANDROID + RootObject* rootObject = findRootObject(exec->dynamicGlobalObject()); + if (!rootObject) + rootObject = findRootObject(exec->lexicalGlobalObject()); +#else JSGlobalObject* globalObject = exec->dynamicGlobalObject(); RootObject* rootObject = findRootObject(globalObject); +#endif if (rootObject) { NPObject* npObject = _NPN_CreateScriptObject(0, object, rootObject); OBJECT_TO_NPVARIANT(npObject, *result); |