Gabriel Ivăncescu : vbscript: Handle NULL code text in ParseScriptText and ParseProcedureText.

Alexandre Julliard julliard at winehq.org
Mon Sep 23 15:22:34 CDT 2019


Module: wine
Branch: master
Commit: 7c9139dffb612a0a9699b354beaf7eb6c8128c00
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=7c9139dffb612a0a9699b354beaf7eb6c8128c00

Author: Gabriel Ivăncescu <gabrielopcode at gmail.com>
Date:   Mon Sep 23 16:19:07 2019 +0300

vbscript: Handle NULL code text in ParseScriptText and ParseProcedureText.

Signed-off-by: Gabriel Ivăncescu <gabrielopcode at gmail.com>
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/vbscript/compile.c   | 2 ++
 dlls/vbscript/tests/run.c | 9 +++++++++
 2 files changed, 11 insertions(+)

diff --git a/dlls/vbscript/compile.c b/dlls/vbscript/compile.c
index 0527297e1e..d78e096285 100644
--- a/dlls/vbscript/compile.c
+++ b/dlls/vbscript/compile.c
@@ -1822,6 +1822,8 @@ HRESULT compile_script(script_ctx_t *script, const WCHAR *src, const WCHAR *deli
     vbscode_t *code;
     HRESULT hres;
 
+    if (!src) src = L"";
+
     hres = parse_script(&ctx.parser, src, delimiter, flags);
     if(FAILED(hres))
         return hres;
diff --git a/dlls/vbscript/tests/run.c b/dlls/vbscript/tests/run.c
index 8e51e3c966..ebcc8836c4 100644
--- a/dlls/vbscript/tests/run.c
+++ b/dlls/vbscript/tests/run.c
@@ -1917,6 +1917,10 @@ static void test_parse_context(void)
     hres = IActiveScript_QueryInterface(engine, &IID_IActiveScriptParse, (void**)&parser);
     ok(hres == S_OK, "Could not get IActiveScriptParse: %08x\n", hres);
 
+    /* NULL code text succeeds but does nothing */
+    hres = IActiveScriptParse_ParseScriptText(parser, NULL, NULL, NULL, NULL, 0, 0, 0, NULL, NULL);
+    ok(hres == S_OK, "ParseScriptText failed: %08x\n", hres);
+
     /* unknown identifier context is not a valid argument */
     str = a2bstr("Call reportSuccess()\n");
     hres = IActiveScriptParse_ParseScriptText(parser, str, yW, NULL, NULL, 0, 0, 0, NULL, NULL);
@@ -2003,6 +2007,7 @@ static void test_procedures(void)
     DISPPARAMS dp = {NULL};
     IActiveScript *script;
     IDispatchEx *proc;
+    IDispatch *disp;
     EXCEPINFO ei = {0};
     VARIANT v;
     HRESULT hres;
@@ -2012,6 +2017,10 @@ static void test_procedures(void)
     hres = IActiveScript_QueryInterface(script, &IID_IActiveScriptParseProcedure2, (void**)&parse_proc);
     ok(hres == S_OK, "Could not get IActiveScriptParseProcedure2 iface: %08x\n", hres);
 
+    hres = IActiveScriptParseProcedure2_ParseProcedureText(parse_proc, NULL, NULL, emptyW, NULL, NULL, NULL, 0, 0, 0, &disp);
+    ok(hres == S_OK, "ParseProcedureText failed: %08x\n", hres);
+    IDispatch_Release(disp);
+
     proc = parse_procedure(parse_proc, "dim x\nif true then x=false", 0);
 
     V_VT(&v) = VT_EMPTY;




More information about the wine-cvs mailing list