【发布时间】:2012-12-30 17:38:26
【问题描述】:
我正在使用 SpiderMonkey JS Engine 1.8.5 API。
JS 代码如下:
visitChildren(function() {
log("something");
});
VisitChildren 类似于:
JSBool visit_children(JSContext* cx, uintN argc, jsval *vp) {
JSFunction* function;
if (!JS_ConvertArguments(cx, argc, JS_ARGV(cx, vp), "f", &function))
return JS_FALSE;
jsval retVal;
JS_CallFunction(cx, JS_GetGlobalObject(cx), function, 0, NULL, &retVal);
return JS_TRUE;
}
我有意简化代码以使问题更清晰。绝对我做错了什么,有人可以建议我为什么调用 *JS_CallFunction* 会导致应用程序崩溃?
UPD1:
在这里找到一些模糊的信息https://developer.mozilla.org/en-US/docs/SpiderMonkey/JSAPI_Reference/JSFunction,但仍然崩溃:
jsval functionVal = OBJECT_TO_JSVAL(JS_GetFunctionObject(function));
JS_CallFunctionValue(cx, JS_GetGlobalObject(cx), functionVal, 0, NULL, &retVal);
【问题讨论】:
-
我对 C++ 了解不多,但是如果将 jsval 设置为 nullptr 会发生什么。
-
否则,您可能有兴趣看看这个:dxr.mozilla.org/…