Bug 514077 - Make XPCNativeWrappers' parent chains follow their wrapped native's chains when they change. r=jorendorff

This commit is contained in:
Blake Kaplan 2010-08-10 15:00:26 -07:00
parent df5f435eac
commit b16ad5ed0a

View File

@ -1650,8 +1650,19 @@ XPCWrappedNative::ReparentWrapperIfFound(XPCCallContext& ccx,
// Now we can just fix up the parent and return the wrapper
if(aNewParent && !JS_SetParent(ccx, flat, aNewParent))
return NS_ERROR_FAILURE;
if(aNewParent)
{
if(!JS_SetParent(ccx, flat, aNewParent))
return NS_ERROR_FAILURE;
JSObject *nw;
if(wrapper &&
(nw = wrapper->GetWrapper()) &&
!JS_SetParent(ccx, nw, JS_GetGlobalForObject(ccx, aNewParent)))
{
return NS_ERROR_FAILURE;
}
}
*aWrapper = nsnull;
wrapper.swap(*aWrapper);