SpiderMonkey JS Engine1.8.5APIを使用しています。
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);