Allow 'this' to not be a wrapped object. bug 390560, r+sr+a=jst
git-svn-id: svn://10.0.0.236/trunk@232171 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
@@ -273,9 +273,18 @@ XPC_XOW_FunctionWrapper(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
|
||||
{
|
||||
JSObject *wrappedObj, *outerObj = obj;
|
||||
|
||||
obj = GetWrapper(cx, obj);
|
||||
if (!obj || (wrappedObj = GetWrappedObject(cx, obj)) == nsnull) {
|
||||
return ThrowException(NS_ERROR_ILLEGAL_VALUE, cx);
|
||||
// Allow 'this' to be either an XOW, in which case we unwrap it.
|
||||
// We disallow invalid XOWs that have no wrapped object. Otherwise,
|
||||
// if it isn't an XOW, then pass it through as-is.
|
||||
|
||||
wrappedObj = GetWrapper(cx, obj);
|
||||
if (wrappedObj) {
|
||||
wrappedObj = GetWrappedObject(cx, wrappedObj);
|
||||
if (!wrappedObj) {
|
||||
return ThrowException(NS_ERROR_ILLEGAL_VALUE, cx);
|
||||
}
|
||||
} else {
|
||||
wrappedObj = obj;
|
||||
}
|
||||
|
||||
JSObject *funObj = JSVAL_TO_OBJECT(argv[-2]);
|
||||
|
||||
Reference in New Issue
Block a user