Create exceptions with the right parent. bug 387390, r=jst sr=brendan

This commit is contained in:
mrbkap@gmail.com 2007-07-10 17:37:03 -07:00
Родитель e92edcff6f
Коммит 178f02522a
1 изменённых файлов: 14 добавлений и 2 удалений

Просмотреть файл

@ -259,6 +259,16 @@ XPCThrower::BuildAndThrowException(JSContext* cx, nsresult rv, const char* sz)
JS_ReportOutOfMemory(cx);
}
static JSObject*
GetGlobalObject(JSContext* cx, JSObject* start)
{
JSObject* parent;
while((parent = JS_GetParent(cx, start)) != nsnull)
start = parent;
return start;
}
// static
JSBool
XPCThrower::ThrowExceptionObject(JSContext* cx, nsIException* e)
@ -269,8 +279,10 @@ XPCThrower::ThrowExceptionObject(JSContext* cx, nsIException* e)
nsXPConnect* xpc = nsXPConnect::GetXPConnect();
if(xpc)
{
// XXX funky JS_GetGlobalObject alert!
JSObject* glob = JS_GetGlobalObject(cx);
JSObject* glob = JS_GetScopeChain(cx);
if(!glob)
return JS_FALSE;
glob = GetGlobalObject(cx, glob);
nsCOMPtr<nsIXPConnectJSObjectHolder> holder;
nsresult rv = xpc->WrapNative(cx, glob, e,