Jacek Caban : jscript: Use (index,length) pair as match result.
Alexandre Julliard
julliard at winehq.org
Thu Mar 7 13:57:14 CST 2013
Module: wine
Branch: master
Commit: c3eecec680593e50314a0bc35757969f09d000f2
URL: http://source.winehq.org/git/wine.git/?a=commit;h=c3eecec680593e50314a0bc35757969f09d000f2
Author: Jacek Caban <jacek at codeweavers.com>
Date: Thu Mar 7 11:03:23 2013 +0100
jscript: Use (index,length) pair as match result.
---
dlls/jscript/jscript.h | 4 ++--
dlls/jscript/jsregexp.c | 20 ++++++++++----------
2 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/dlls/jscript/jscript.h b/dlls/jscript/jscript.h
index 35e2c3f..135b77f 100644
--- a/dlls/jscript/jscript.h
+++ b/dlls/jscript/jscript.h
@@ -362,8 +362,8 @@ typedef struct {
} jsexcept_t;
typedef struct {
- const WCHAR *str;
- DWORD len;
+ unsigned index;
+ unsigned length;
} match_result_t;
struct _script_ctx_t {
diff --git a/dlls/jscript/jsregexp.c b/dlls/jscript/jsregexp.c
index f9b9992..43df35a 100644
--- a/dlls/jscript/jsregexp.c
+++ b/dlls/jscript/jsregexp.c
@@ -98,11 +98,11 @@ static HRESULT do_regexp_match_next(script_ctx_t *ctx, RegExpInstance *regexp,
for(i=0; i < n; i++) {
if(ret->parens[i].index == -1) {
- ctx->match_parens[i].str = NULL;
- ctx->match_parens[i].len = 0;
+ ctx->match_parens[i].index = 0;
+ ctx->match_parens[i].length = 0;
}else {
- ctx->match_parens[i].str = ctx->last_match->str + ret->parens[i].index;
- ctx->match_parens[i].len = ret->parens[i].length;
+ ctx->match_parens[i].index = ret->parens[i].index;
+ ctx->match_parens[i].length = ret->parens[i].length;
}
}
@@ -216,8 +216,8 @@ static HRESULT regexp_match(script_ctx_t *ctx, jsdisp_t *dispex, jsstr_t *str, B
}
}
- ret[i].str = result->cp - result->match_len;
- ret[i++].len = result->match_len;
+ ret[i].index = result->cp - str->str - result->match_len;
+ ret[i++].length = result->match_len;
if(!gflag && !(This->jsregexp->flags & REG_GLOB)) {
hres = S_OK;
@@ -736,7 +736,7 @@ HRESULT regexp_string_match(script_ctx_t *ctx, jsdisp_t *re, jsstr_t *str, jsval
for(i=0; i < match_cnt; i++) {
jsstr_t *tmp_str;
- tmp_str = jsstr_alloc_len(match_result[i].str, match_result[i].len);
+ tmp_str = jsstr_substr(str, match_result[i].index, match_result[i].length);
if(!tmp_str) {
hres = E_OUTOFMEMORY;
break;
@@ -749,12 +749,12 @@ HRESULT regexp_string_match(script_ctx_t *ctx, jsdisp_t *re, jsstr_t *str, jsval
}
while(SUCCEEDED(hres)) {
- hres = jsdisp_propput_name(array, indexW, jsval_number(match_result[match_cnt-1].str-str->str));
+ hres = jsdisp_propput_name(array, indexW, jsval_number(match_result[match_cnt-1].index));
if(FAILED(hres))
break;
hres = jsdisp_propput_name(array, lastIndexW,
- jsval_number(match_result[match_cnt-1].str-str->str+match_result[match_cnt-1].len));
+ jsval_number(match_result[match_cnt-1].index + match_result[match_cnt-1].length));
if(FAILED(hres))
break;
@@ -777,7 +777,7 @@ static HRESULT global_idx(script_ctx_t *ctx, DWORD flags, DWORD idx, jsval_t *r)
case DISPATCH_PROPERTYGET: {
jsstr_t *ret;
- ret = jsstr_alloc_len(ctx->match_parens[idx].str, ctx->match_parens[idx].len);
+ ret = jsstr_substr(ctx->last_match, ctx->match_parens[idx].index, ctx->match_parens[idx].length);
if(!ret)
return E_OUTOFMEMORY;
More information about the wine-cvs
mailing list