Piotr Caban : jscript: Fix String_match implementation.

Alexandre Julliard julliard at winehq.org
Mon Jul 13 07:57:08 CDT 2009


Module: wine
Branch: master
Commit: 91ce0dd6a33edf148bb01675873158df1577caa4
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=91ce0dd6a33edf148bb01675873158df1577caa4

Author: Piotr Caban <piotr.caban at gmail.com>
Date:   Sun Jul 12 19:52:21 2009 +0200

jscript: Fix String_match implementation.

---

 dlls/jscript/string.c        |    9 ++++++---
 dlls/jscript/tests/regexp.js |   18 +++++++++++++-----
 2 files changed, 19 insertions(+), 8 deletions(-)

diff --git a/dlls/jscript/string.c b/dlls/jscript/string.c
index 0385a22..6aa6302 100644
--- a/dlls/jscript/string.c
+++ b/dlls/jscript/string.c
@@ -596,9 +596,12 @@ static HRESULT String_match(DispatchEx *dispex, LCID lcid, WORD flags, DISPPARAM
 
     TRACE("\n");
 
-    if(arg_cnt(dp) != 1) {
-        FIXME("unsupported args\n");
-        return E_NOTIMPL;
+    if(!arg_cnt(dp)) {
+        if(retv) {
+            V_VT(retv) = VT_NULL;
+        }
+
+        return S_OK;
     }
 
     arg_var = get_arg(dp, 0);
diff --git a/dlls/jscript/tests/regexp.js b/dlls/jscript/tests/regexp.js
index 6809101..3e4db68 100644
--- a/dlls/jscript/tests/regexp.js
+++ b/dlls/jscript/tests/regexp.js
@@ -31,7 +31,7 @@ ok(m["0"] === "ab", "m[0] is not \"ab\"");
 
 m = "abcabc".match(/ab/g);
 ok(typeof(m) === "object", "typeof m is not object");
-ok(m.length === 2, "m.length is not 1");
+ok(m.length === 2, "m.length is not 2");
 ok(m["0"] === "ab", "m[0] is not \"ab\"");
 ok(m["1"] === "ab", "m[1] is not \"ab\"");
 
@@ -41,7 +41,7 @@ ok(m === null, "m is not null");
 
 m = "abcabc".match(/Ab/gi);
 ok(typeof(m) === "object", "typeof m is not object");
-ok(m.length === 2, "m.length is not 1");
+ok(m.length === 2, "m.length is not 2");
 ok(m["0"] === "ab", "m[0] is not \"ab\"");
 ok(m["1"] === "ab", "m[1] is not \"ab\"");
 
@@ -64,22 +64,30 @@ ok(m["0"] === "ab", "m[0] is not \"ab\"");
 
 m = "abcabc".match(new RegExp("ab","g"));
 ok(typeof(m) === "object", "typeof m is not object");
-ok(m.length === 2, "m.length is not 1");
+ok(m.length === 2, "m.length is not 2");
 ok(m["0"] === "ab", "m[0] is not \"ab\"");
 ok(m["1"] === "ab", "m[1] is not \"ab\"");
 
 m = "abcabc".match(new RegExp(/ab/g));
 ok(typeof(m) === "object", "typeof m is not object");
-ok(m.length === 2, "m.length is not 1");
+ok(m.length === 2, "m.length is not 2");
 ok(m["0"] === "ab", "m[0] is not \"ab\"");
 ok(m["1"] === "ab", "m[1] is not \"ab\"");
 
 m = "abcabc".match(new RegExp("ab","g", "test"));
 ok(typeof(m) === "object", "typeof m is not object");
-ok(m.length === 2, "m.length is not 1");
+ok(m.length === 2, "m.length is not 2");
 ok(m["0"] === "ab", "m[0] is not \"ab\"");
 ok(m["1"] === "ab", "m[1] is not \"ab\"");
 
+m = "abcabcg".match("ab", "g");
+ok(typeof(m) === "object", "typeof m is not object");
+ok(m.length === 1, "m.length is not 1");
+ok(m["0"] === "ab", "m[0] is not \"ab\"");
+
+m = "abcabc".match();
+ok(m === null, "m is not null");
+
 r = "- [test] -".replace(/\[([^\[]+)\]/g, "success");
 ok(r === "- success -", "r = " + r + " expected '- success -'");
 




More information about the wine-cvs mailing list