Jacek Caban : vbscript: Properly release global variables.
Alexandre Julliard
julliard at winehq.org
Fri Oct 14 14:14:49 CDT 2011
Module: wine
Branch: master
Commit: 6f0e215fb574ffe5891b717b5def2d08304430b8
URL: http://source.winehq.org/git/wine.git/?a=commit;h=6f0e215fb574ffe5891b717b5def2d08304430b8
Author: Jacek Caban <jacek at codeweavers.com>
Date: Fri Oct 14 16:22:18 2011 +0200
vbscript: Properly release global variables.
---
dlls/vbscript/interp.c | 9 +++++++++
dlls/vbscript/vbscript.c | 3 +++
dlls/vbscript/vbscript.h | 1 +
3 files changed, 13 insertions(+), 0 deletions(-)
diff --git a/dlls/vbscript/interp.c b/dlls/vbscript/interp.c
index 08bf710..f036557 100644
--- a/dlls/vbscript/interp.c
+++ b/dlls/vbscript/interp.c
@@ -1561,11 +1561,20 @@ OP_LIST
#undef X
};
+void release_dynamic_vars(dynamic_var_t *var)
+{
+ while(var) {
+ VariantClear(&var->v);
+ var = var->next;
+ }
+}
+
static void release_exec(exec_ctx_t *ctx)
{
unsigned i;
VariantClear(&ctx->ret_val);
+ release_dynamic_vars(ctx->dynamic_vars);
if(ctx->this_obj)
IDispatch_Release(ctx->this_obj);
diff --git a/dlls/vbscript/vbscript.c b/dlls/vbscript/vbscript.c
index ffaa63e..af037bd 100644
--- a/dlls/vbscript/vbscript.c
+++ b/dlls/vbscript/vbscript.c
@@ -114,6 +114,9 @@ static void release_script(script_ctx_t *ctx)
{
collect_objects(ctx);
+ release_dynamic_vars(ctx->global_vars);
+ ctx->global_vars = NULL;
+
while(!list_empty(&ctx->named_items)) {
named_item_t *iter = LIST_ENTRY(list_head(&ctx->named_items), named_item_t, entry);
diff --git a/dlls/vbscript/vbscript.h b/dlls/vbscript/vbscript.h
index 9e18f47..890c7c7 100644
--- a/dlls/vbscript/vbscript.h
+++ b/dlls/vbscript/vbscript.h
@@ -309,6 +309,7 @@ struct _vbscode_t {
void release_vbscode(vbscode_t*) DECLSPEC_HIDDEN;
HRESULT compile_script(script_ctx_t*,const WCHAR*,vbscode_t**) DECLSPEC_HIDDEN;
HRESULT exec_script(script_ctx_t*,function_t*,IDispatch*,DISPPARAMS*,VARIANT*) DECLSPEC_HIDDEN;
+void release_dynamic_vars(dynamic_var_t*) DECLSPEC_HIDDEN;
#define TID_LIST \
XDIID(ErrObj) \
More information about the wine-cvs
mailing list