0

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);
4

1 に答える 1

1

代わりにJS_CallFunctionValue[1]が必要です。JS_ConvertArgumentsタイプ(呼び出し)をテストした後JSFunction、変換の結果を無視し、代わりに実際のjsvalを使用します。sの用途はまだ見つかりませんJSFunction

于 2012-12-30T18:14:21.040 に答える