fix log in engine err
This commit is contained in:
@@ -313,6 +313,26 @@ void actor_disrupt(JSContext *ctx)
|
|||||||
JSValue js_core_internal_os_use(JSContext *js);
|
JSValue js_core_internal_os_use(JSContext *js);
|
||||||
JSValue js_core_json_use(JSContext *js);
|
JSValue js_core_json_use(JSContext *js);
|
||||||
|
|
||||||
|
/* Engine-env log proxy: routes log("channel", [msg]) through JS_Log.
|
||||||
|
Before set_log is called, JS_Log falls back to stderr.
|
||||||
|
After set_log, JS_Log forwards to the engine's JS log function.
|
||||||
|
This exists so mcode-generated type-check error paths (which always
|
||||||
|
access 'log' as an intrinsic) work inside engine.cm itself. */
|
||||||
|
static JSValue js_engine_log(JSContext *js, JSValue self,
|
||||||
|
int argc, JSValue *argv) {
|
||||||
|
if (argc < 2) return JS_NULL;
|
||||||
|
const char *channel = JS_ToCString(js, argv[0]);
|
||||||
|
if (!channel) return JS_NULL;
|
||||||
|
JSValue msg_val = JS_GetPropertyNumber(js, argv[1], 0);
|
||||||
|
const char *msg = JS_ToCString(js, msg_val);
|
||||||
|
if (msg) {
|
||||||
|
JS_Log(js, channel, "%s", msg);
|
||||||
|
JS_FreeCString(js, msg);
|
||||||
|
}
|
||||||
|
JS_FreeCString(js, channel);
|
||||||
|
return JS_NULL;
|
||||||
|
}
|
||||||
|
|
||||||
void script_startup(JSContext *js)
|
void script_startup(JSContext *js)
|
||||||
{
|
{
|
||||||
if (!g_runtime) {
|
if (!g_runtime) {
|
||||||
@@ -414,6 +434,8 @@ void script_startup(JSContext *js)
|
|||||||
}
|
}
|
||||||
tmp = shop_path ? JS_NewString(js, shop_path) : JS_NULL;
|
tmp = shop_path ? JS_NewString(js, shop_path) : JS_NULL;
|
||||||
JS_SetPropertyStr(js, env_ref.val, "shop_path", tmp);
|
JS_SetPropertyStr(js, env_ref.val, "shop_path", tmp);
|
||||||
|
tmp = JS_NewCFunction(js, js_engine_log, "log", 2);
|
||||||
|
JS_SetPropertyStr(js, env_ref.val, "log", tmp);
|
||||||
|
|
||||||
// Stone the environment
|
// Stone the environment
|
||||||
JSValue hidden_env = JS_Stone(js, env_ref.val);
|
JSValue hidden_env = JS_Stone(js, env_ref.val);
|
||||||
@@ -761,6 +783,8 @@ int cell_init(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
JS_SetPropertyStr(ctx, env_ref.val, "args", args_ref.val);
|
JS_SetPropertyStr(ctx, env_ref.val, "args", args_ref.val);
|
||||||
JS_DeleteGCRef(ctx, &args_ref);
|
JS_DeleteGCRef(ctx, &args_ref);
|
||||||
|
tmp = JS_NewCFunction(ctx, js_engine_log, "log", 2);
|
||||||
|
JS_SetPropertyStr(ctx, env_ref.val, "log", tmp);
|
||||||
JSValue hidden_env = JS_Stone(ctx, env_ref.val);
|
JSValue hidden_env = JS_Stone(ctx, env_ref.val);
|
||||||
|
|
||||||
g_crash_ctx = ctx;
|
g_crash_ctx = ctx;
|
||||||
|
|||||||
Reference in New Issue
Block a user