From: Francis De Brabandere francisdb@gmail.com
--- dlls/vbscript/global.c | 9 ++++++--- dlls/vbscript/tests/api.vbs | 14 ++++++++++++++ 2 files changed, 20 insertions(+), 3 deletions(-)
diff --git a/dlls/vbscript/global.c b/dlls/vbscript/global.c index 058ddabcde1..109a20a3ac3 100644 --- a/dlls/vbscript/global.c +++ b/dlls/vbscript/global.c @@ -1404,9 +1404,6 @@ static HRESULT Global_Mid(BuiltinDisp *This, VARIANT *args, unsigned args_cnt, V
assert(args_cnt == 2 || args_cnt == 3);
- if(V_VT(args) == VT_EMPTY) - return MAKE_VBSERROR(VBSE_ILLEGAL_FUNC_CALL); - if(V_VT(args+1) == VT_NULL || (args_cnt == 3 && V_VT(args+2) == VT_NULL)) return MAKE_VBSERROR(VBSE_ILLEGAL_NULL_USE);
@@ -1432,6 +1429,12 @@ static HRESULT Global_Mid(BuiltinDisp *This, VARIANT *args, unsigned args_cnt, V return MAKE_VBSERROR(VBSE_ILLEGAL_FUNC_CALL); }
+ if(V_VT(args) == VT_EMPTY) + return return_string(res, L""); + + if(V_VT(args) == VT_NULL) + return return_null(res); + if(V_VT(args) == VT_BSTR) { str = V_BSTR(args); }else { diff --git a/dlls/vbscript/tests/api.vbs b/dlls/vbscript/tests/api.vbs index 7b8744f4c74..6375f2ae620 100644 --- a/dlls/vbscript/tests/api.vbs +++ b/dlls/vbscript/tests/api.vbs @@ -632,6 +632,16 @@ Sub TestMid2(str, start, ex) Call ok(x = ex, "Mid(" & str & ", " & start & ") = " & x & " expected " & ex) End Sub
+Sub TestMidNull(str, start, len) + x = Mid(str, start, len) + Call ok(IsNull(x), "Mid(" & str & ", " & start & ", " & len & ") = " & x & " expected Null") +End Sub + +Sub TestMidNull2(str, start) + x = Mid(str, start) + Call ok(IsNull(x), "Mid(" & str & ", " & start & ") = " & x & " expected Null") +End Sub + TestMid "test", 2, 2, "es" TestMid "test", 2, 4, "est" TestMid "test", 1, 2, "te" @@ -640,11 +650,15 @@ TestMid "test", 1, 0, "" TestMid "test", 5, 2, "" TestMid 1234, 1, 2, "12" TestMid 1234, 5, 2, "" +TestMid empty, 5, 2, "" TestMid2 "test", 1, "test" TestMid2 "test", 2, "est" TestMid2 "test", 4, "t" TestMid2 "test", 5, "" TestMid2 1234, 5, "" +TestMid2 empty, 5, "" +TestMidNull null, 5, 2 +TestMidNull2 null, 5
sub TestMidError() on error resume next
Hi,
It looks like your patch introduced the new failures shown below. Please investigate and fix them before resubmitting your patch. If they are not new, fixing them anyway would help a lot. Otherwise please ask for the known failures list to be updated.
The tests also ran into some preexisting test failures. If you know how to fix them that would be helpful. See the TestBot job for the details:
The full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=150452
Your paranoid android.
=== debian11 (32 bit report) ===
vbscript: run.c:1224: Test failed: api.vbs: L"Err.number = 0"
=== debian11 (32 bit ar:MA report) ===
vbscript: run.c:1224: Test failed: api.vbs: L"Err.number = 0"
=== debian11 (32 bit de report) ===
vbscript: run.c:1224: Test failed: api.vbs: L"Err.number = 0"
=== debian11 (32 bit fr report) ===
vbscript: run.c:1224: Test failed: api.vbs: L"Err.number = 0"
=== debian11 (32 bit he:IL report) ===
vbscript: run.c:1224: Test failed: api.vbs: L"Err.number = 0"
=== debian11 (32 bit hi:IN report) ===
vbscript: run.c:1224: Test failed: api.vbs: L"Err.number = 0"
=== debian11 (32 bit ja:JP report) ===
vbscript: run.c:1224: Test failed: api.vbs: L"Err.number = 0"
=== debian11 (32 bit zh:CN report) ===
vbscript: run.c:1224: Test failed: api.vbs: L"Err.number = 0"
=== debian11b (32 bit WoW report) ===
vbscript: run.c:1224: Test failed: api.vbs: L"Err.number = 0"
=== debian11b (64 bit WoW report) ===
user32: input.c:4305: Test succeeded inside todo block: button_down_hwnd_todo 1: got MSG_TEST_WIN hwnd 00000000006C00F2, msg WM_LBUTTONDOWN, wparam 0x1, lparam 0x320032
vbscript: run.c:1224: Test failed: api.vbs: L"Err.number = 0"
Report validation errors: uiautomationcore:uiautomation crashed (c0000005)
I validated both these cases on windows