зеркало из https://github.com/mozilla/gecko-dev.git
Bug 780288 - Fix bugs in js shell Help native (r=billm)
--HG-- extra : rebase_source : 7f9acb83ff14186933b3eaa19e7b577d1d510bc7
This commit is contained in:
Родитель
a4f589abb7
Коммит
0366c303cc
|
@ -0,0 +1,20 @@
|
||||||
|
s = newGlobal()
|
||||||
|
try {
|
||||||
|
evalcx("\
|
||||||
|
Object.defineProperty(this,\"i\",{enumerable:true,get:function(){t}});\
|
||||||
|
for each(y in this)true\
|
||||||
|
", s)
|
||||||
|
} catch (e) {}
|
||||||
|
try {
|
||||||
|
evalcx("\
|
||||||
|
for(z=0,(7).watch(\"\",eval);;g){\
|
||||||
|
if(z=1){({t:function(){}})\
|
||||||
|
}\
|
||||||
|
", s)
|
||||||
|
} catch (e) {}
|
||||||
|
try {
|
||||||
|
evalcx("\
|
||||||
|
Object.defineProperty(this,\"g2\",{get:function(){return this}});\
|
||||||
|
g2.y()\
|
||||||
|
", s)
|
||||||
|
} catch (e) {}
|
|
@ -0,0 +1,20 @@
|
||||||
|
s = newGlobal()
|
||||||
|
try {
|
||||||
|
evalcx("\
|
||||||
|
Object.defineProperty(this,\"i\",{enumerable:true,get:function(){t}});\
|
||||||
|
for each(y in this)true\
|
||||||
|
", s)
|
||||||
|
} catch (e) {}
|
||||||
|
try {
|
||||||
|
evalcx("\
|
||||||
|
for(z=0,(7).watch(\"\",eval);;g){\
|
||||||
|
if(z=1){({t:function(){}})\
|
||||||
|
}\
|
||||||
|
", s)
|
||||||
|
} catch (e) {}
|
||||||
|
try {
|
||||||
|
evalcx("\
|
||||||
|
Object.defineProperty(this,\"g2\",{get:function(){return this}});\
|
||||||
|
g2.y(\"\")\
|
||||||
|
", s)
|
||||||
|
} catch (e) {}
|
|
@ -3880,7 +3880,7 @@ Help(JSContext *cx, unsigned argc, jsval *vp)
|
||||||
|
|
||||||
RootedObject obj(cx);
|
RootedObject obj(cx);
|
||||||
if (argc == 0) {
|
if (argc == 0) {
|
||||||
RootedObject global(cx, JS_GetGlobalObject(cx));
|
RootedObject global(cx, JS_GetGlobalForScopeChain(cx));
|
||||||
AutoIdArray ida(cx, JS_Enumerate(cx, global));
|
AutoIdArray ida(cx, JS_Enumerate(cx, global));
|
||||||
if (!ida)
|
if (!ida)
|
||||||
return false;
|
return false;
|
||||||
|
@ -3889,15 +3889,23 @@ Help(JSContext *cx, unsigned argc, jsval *vp)
|
||||||
jsval v;
|
jsval v;
|
||||||
if (!JS_LookupPropertyById(cx, global, ida[i], &v))
|
if (!JS_LookupPropertyById(cx, global, ida[i], &v))
|
||||||
return false;
|
return false;
|
||||||
|
if (JSVAL_IS_PRIMITIVE(v)) {
|
||||||
|
JS_ReportError(cx, "primitive arg");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
obj = JSVAL_TO_OBJECT(v);
|
obj = JSVAL_TO_OBJECT(v);
|
||||||
if (!JSVAL_IS_PRIMITIVE(v) && !PrintHelp(cx, obj))
|
if (!PrintHelp(cx, obj))
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
jsval *argv = JS_ARGV(cx, vp);
|
jsval *argv = JS_ARGV(cx, vp);
|
||||||
for (unsigned i = 0; i < argc; i++) {
|
for (unsigned i = 0; i < argc; i++) {
|
||||||
|
if (JSVAL_IS_PRIMITIVE(argv[i])) {
|
||||||
|
JS_ReportError(cx, "primitive arg");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
obj = JSVAL_TO_OBJECT(argv[i]);
|
obj = JSVAL_TO_OBJECT(argv[i]);
|
||||||
if (!JSVAL_IS_PRIMITIVE(argv[i]) && !PrintHelp(cx, obj))
|
if (!PrintHelp(cx, obj))
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче