diff --git a/mozilla/js/src/xpconnect/src/XPCWrapper.cpp b/mozilla/js/src/xpconnect/src/XPCWrapper.cpp index d6bde79820f..c823bc3a59e 100644 --- a/mozilla/js/src/xpconnect/src/XPCWrapper.cpp +++ b/mozilla/js/src/xpconnect/src/XPCWrapper.cpp @@ -215,7 +215,7 @@ XPCWrapper::AddProperty(JSContext *cx, JSObject *wrapperObj, attrs = sprop->attrs; if (attrs & JSPROP_GETTER) { - getter = sprop->getter; + getter = sprop->getter; } if (attrs & JSPROP_SETTER) { setter = sprop->setter; diff --git a/mozilla/js/src/xpconnect/src/xpcconvert.cpp b/mozilla/js/src/xpconnect/src/xpcconvert.cpp index 381178c8cac..35121aba279 100644 --- a/mozilla/js/src/xpconnect/src/xpcconvert.cpp +++ b/mozilla/js/src/xpconnect/src/xpcconvert.cpp @@ -1219,6 +1219,24 @@ XPCConvert::NativeInterface2JSObject(XPCCallContext& ccx, *dest = objHolder; return JS_TRUE; } + + // Reaching across scopes from content code. Wrap + // the new object in a XOW. + jsval v = OBJECT_TO_JSVAL(flat); + XPCJSObjectHolder *objHolder = nsnull; + if (!XPC_XOW_WrapObject(ccx, scope, &v) || + !(objHolder = + XPCJSObjectHolder::newHolder(ccx, + JSVAL_TO_OBJECT(v)))) + { + NS_RELEASE(wrapper); + return JS_FALSE; + } + + NS_ADDREF(objHolder); + NS_RELEASE(wrapper); + *dest = objHolder; + return JS_TRUE; } }