From eb43d59e8e007924f472a2382955b8df7c6e8f27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gabriel=20Iv=C4=83ncescu?= Date: Thu, 11 Mar 2021 18:01:08 +0200 Subject: [PATCH] jscript: Store the object prototype in the script context. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Gabriel Ivăncescu Signed-off-by: Jacek Caban Signed-off-by: Alexandre Julliard --- dlls/jscript/global.c | 7 +++---- dlls/jscript/jscript.c | 5 +++++ dlls/jscript/jscript.h | 1 + 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/dlls/jscript/global.c b/dlls/jscript/global.c index 735e188e1bd..33869cd5fc6 100644 --- a/dlls/jscript/global.c +++ b/dlls/jscript/global.c @@ -1055,7 +1055,7 @@ static HRESULT init_constructors(script_ctx_t *ctx, jsdisp_t *object_prototype) HRESULT init_global(script_ctx_t *ctx) { unsigned const_flags = ctx->version >= SCRIPTLANGUAGEVERSION_ES5 ? 0 : PROPF_WRITABLE; - jsdisp_t *math, *object_prototype, *constr; + jsdisp_t *math, *constr; HRESULT hres; if(ctx->global) @@ -1065,12 +1065,11 @@ HRESULT init_global(script_ctx_t *ctx) if(FAILED(hres)) return hres; - hres = create_object_prototype(ctx, &object_prototype); + hres = create_object_prototype(ctx, &ctx->object_prototype); if(FAILED(hres)) return hres; - hres = init_constructors(ctx, object_prototype); - jsdisp_release(object_prototype); + hres = init_constructors(ctx, ctx->object_prototype); if(FAILED(hres)) return hres; diff --git a/dlls/jscript/jscript.c b/dlls/jscript/jscript.c index c5c23889f04..67a25d1714b 100644 --- a/dlls/jscript/jscript.c +++ b/dlls/jscript/jscript.c @@ -483,6 +483,11 @@ static void decrease_state(JScript *This, SCRIPTSTATE state) This->ctx->site = NULL; } + if(This->ctx->object_prototype) { + jsdisp_release(This->ctx->object_prototype); + This->ctx->object_prototype = NULL; + } + if(This->ctx->global) { jsdisp_release(This->ctx->global); This->ctx->global = NULL; diff --git a/dlls/jscript/jscript.h b/dlls/jscript/jscript.h index b590e1a7441..d7d9dd7a4e3 100644 --- a/dlls/jscript/jscript.h +++ b/dlls/jscript/jscript.h @@ -451,6 +451,7 @@ struct _script_ctx_t { jsdisp_t *uri_error_constr; jsdisp_t *number_constr; jsdisp_t *object_constr; + jsdisp_t *object_prototype; jsdisp_t *regexp_constr; jsdisp_t *string_constr; jsdisp_t *vbarray_constr;