Jacek Caban : jscript: Correctly handle -1 index in regexp match result.

Alexandre Julliard julliard at winehq.org
Thu Dec 3 10:29:52 CST 2009


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Thu Dec  3 01:13:27 2009 +0100

jscript: Correctly handle -1 index in regexp match result.

---

 dlls/jscript/regexp.c        |    9 +++++++--
 dlls/jscript/tests/regexp.js |    5 +++++
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/dlls/jscript/regexp.c b/dlls/jscript/regexp.c
index 0c8a419..bcc1665 100644
--- a/dlls/jscript/regexp.c
+++ b/dlls/jscript/regexp.c
@@ -3349,8 +3349,13 @@ static HRESULT do_regexp_match_next(script_ctx_t *ctx, RegExpInstance *regexp, c
         *parens_cnt = regexp->jsregexp->parenCount;
 
         for(i=0; i < regexp->jsregexp->parenCount; i++) {
-            (*parens)[i].str = *cp + result->parens[i].index;
-            (*parens)[i].len = result->parens[i].length;
+            if(result->parens[i].index == -1) {
+                (*parens)[i].str = NULL;
+                (*parens)[i].len = 0;
+            }else {
+                (*parens)[i].str = *cp + result->parens[i].index;
+                (*parens)[i].len = result->parens[i].length;
+            }
         }
     }
 
diff --git a/dlls/jscript/tests/regexp.js b/dlls/jscript/tests/regexp.js
index bcc9aba..9a14a93 100644
--- a/dlls/jscript/tests/regexp.js
+++ b/dlls/jscript/tests/regexp.js
@@ -71,6 +71,11 @@ m = re.exec();
 ok(m === null, "m is not null");
 ok(re.lastIndex === 0, "re.lastIndex = " + re.lastIndex);
 
+m = /(a|b)+|(c)/.exec("aa");
+ok(m[0] === "aa", "m[0] = " + m[0]);
+ok(m[1] === "a", "m[1] = " + m[1]);
+ok(m[2] === "", "m[2] = " + m[2]);
+
 b = re.test("  a ");
 ok(b === true, "re.test('  a ') returned " + b);
 ok(re.lastIndex === 3, "re.lastIndex = " + re.lastIndex);




More information about the wine-cvs mailing list