Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/vbscript/compile.c | 3 +++ dlls/vbscript/tests/run.c | 9 +++++++++ 2 files changed, 12 insertions(+)
diff --git a/dlls/vbscript/compile.c b/dlls/vbscript/compile.c index 0527297..44919be 100644 --- a/dlls/vbscript/compile.c +++ b/dlls/vbscript/compile.c @@ -1815,6 +1815,7 @@ static void release_compiler(compile_ctx_t *ctx)
HRESULT compile_script(script_ctx_t *script, const WCHAR *src, const WCHAR *delimiter, DWORD flags, vbscode_t **ret) { + static const WCHAR emptyW[] = { 0 }; function_t *new_func; function_decl_t *func_decl; class_decl_t *class_decl; @@ -1822,6 +1823,8 @@ HRESULT compile_script(script_ctx_t *script, const WCHAR *src, const WCHAR *deli vbscode_t *code; HRESULT hres;
+ if (!src) src = emptyW; + 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 8e51e3c..ebcc883 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;
Hi Gabriel,
On 9/23/19 2:51 PM, Gabriel Ivăncescu wrote:
--- a/dlls/vbscript/compile.c +++ b/dlls/vbscript/compile.c @@ -1815,6 +1815,7 @@ static void release_compiler(compile_ctx_t *ctx)
HRESULT compile_script(script_ctx_t *script, const WCHAR *src, const WCHAR *delimiter, DWORD flags, vbscode_t **ret) {
- static const WCHAR emptyW[] = { 0 }; function_t *new_func; function_decl_t *func_decl; class_decl_t *class_decl;
@@ -1822,6 +1823,8 @@ HRESULT compile_script(script_ctx_t *script, const WCHAR *src, const WCHAR *deli vbscode_t *code; HRESULT hres;
- if (!src) src = emptyW;
Please use L"" instead.
Thanks,
Jacek
On 9/23/19 4:05 PM, Jacek Caban wrote:
Hi Gabriel,
On 9/23/19 2:51 PM, Gabriel Ivăncescu wrote:
--- a/dlls/vbscript/compile.c +++ b/dlls/vbscript/compile.c @@ -1815,6 +1815,7 @@ static void release_compiler(compile_ctx_t *ctx) HRESULT compile_script(script_ctx_t *script, const WCHAR *src, const WCHAR *delimiter, DWORD flags, vbscode_t **ret) { + static const WCHAR emptyW[] = { 0 }; function_t *new_func; function_decl_t *func_decl; class_decl_t *class_decl; @@ -1822,6 +1823,8 @@ HRESULT compile_script(script_ctx_t *script, const WCHAR *src, const WCHAR *deli vbscode_t *code; HRESULT hres; + if (!src) src = emptyW;
Please use L"" instead.
Thanks,
Jacek
Ah, I didn't know that Wine allows the use of Unicode literals now.