diff --git a/mozilla/modules/libhook/src/hk_hook.c b/mozilla/modules/libhook/src/hk_hook.c index 644e3625469..82e4f8e503e 100644 --- a/mozilla/modules/libhook/src/hk_hook.c +++ b/mozilla/modules/libhook/src/hk_hook.c @@ -70,11 +70,14 @@ hk_IsUnknownTagHook(void *extra) return 0; } + JS_BeginRequest(j_context); if ((JS_GetProperty(j_context, HookObject, hook_func, &tmp_val))&& (JS_TypeOfValue(j_context, tmp_val) == JSTYPE_FUNCTION)) { + JS_EndRequest(j_context); return 1; } + JS_EndRequest(j_context); return 0; } @@ -128,12 +131,14 @@ HK_CallHook(int32 hook_id, void *extra, int32 window_id, return 0; } + JS_BeginRequest(j_context); /* * Check that there is a function to call. */ if ((!JS_GetProperty(j_context, HookObject, hook_func, &tmp_val))|| (JS_TypeOfValue(j_context, tmp_val) != JSTYPE_FUNCTION)) { + JS_EndRequest(j_context); return 0; } @@ -143,6 +148,7 @@ HK_CallHook(int32 hook_id, void *extra, int32 window_id, str = JS_NewStringCopyZ(j_context, hook_str); if (str == NULL) { + JS_EndRequest(j_context); return 0; } argv[0] = STRING_TO_JSVAL(str); @@ -150,6 +156,7 @@ HK_CallHook(int32 hook_id, void *extra, int32 window_id, if (!JS_CallFunctionName(j_context, HookObject, hook_func, 2, argv, &tmp_val)) { + JS_EndRequest(j_context); return 0; } @@ -162,16 +169,19 @@ HK_CallHook(int32 hook_id, void *extra, int32 window_id, str = JS_ValueToString(j_context, tmp_val); if (str == NULL) { + JS_EndRequest(j_context); return 0; } result_str = JS_GetStringBytes(str); return_str = XP_STRDUP(result_str); if (return_str == NULL) { + JS_EndRequest(j_context); return 0; } *hook_ret = return_str; } + JS_EndRequest(j_context); return 1; } diff --git a/mozilla/modules/libhook/src/hk_init.c b/mozilla/modules/libhook/src/hk_init.c index 6ed2a29a7d8..897478d045e 100644 --- a/mozilla/modules/libhook/src/hk_init.c +++ b/mozilla/modules/libhook/src/hk_init.c @@ -363,11 +363,13 @@ HK_Init(void) return 0; } + JS_BeginRequest(j_context); hook_obj = JS_DefineObject(j_context, j_object, "HookConfig", &autoconf_class, NULL, JSPROP_ENUMERATE|JSPROP_READONLY|JSPROP_PERMANENT); + JS_EndRequest(j_context); } if (hook_obj == NULL) {