vbscript: Treat empty regexp pattern the same way as NULL pattern.
This commit is contained in:
parent
e27a13e3a2
commit
392736c5e8
|
@ -174,4 +174,21 @@ Call ok(x.IgnoreCase = false, "RegExp.IgnoreCase = " & x.IgnoreCase)
|
||||||
Call ok(x.Global = false, "RegExp.Global = " & x.Global)
|
Call ok(x.Global = false, "RegExp.Global = " & x.Global)
|
||||||
Call ok(x.Multiline = false, "RegExp.Multiline = " & x.Multiline)
|
Call ok(x.Multiline = false, "RegExp.Multiline = " & x.Multiline)
|
||||||
|
|
||||||
|
set matches = x.execute("test")
|
||||||
|
Call ok(matches.Count = 1, "matches.Count = " & matches.Count)
|
||||||
|
x.pattern = ""
|
||||||
|
set matches = x.execute("test")
|
||||||
|
Call ok(matches.Count = 1, "matches.Count = " & matches.Count)
|
||||||
|
set match = matches.item(0)
|
||||||
|
Call ok(match.Value = "", "match.Value = " & match.Value)
|
||||||
|
x.global = true
|
||||||
|
set matches = x.execute("test")
|
||||||
|
Call ok(matches.Count = 5, "matches.Count = " & matches.Count)
|
||||||
|
set match = matches.item(0)
|
||||||
|
Call ok(match.Value = "", "match.Value = " & match.Value)
|
||||||
|
set match = matches.item(4)
|
||||||
|
Call ok(match.Value = "", "match.Value = " & match.Value)
|
||||||
|
matches = x.test("test")
|
||||||
|
Call ok(matches = true, "matches = " & matches)
|
||||||
|
|
||||||
Call reportSuccess()
|
Call reportSuccess()
|
||||||
|
|
|
@ -1189,29 +1189,23 @@ static HRESULT WINAPI RegExp2_get_Pattern(IRegExp2 *iface, BSTR *pPattern)
|
||||||
static HRESULT WINAPI RegExp2_put_Pattern(IRegExp2 *iface, BSTR pattern)
|
static HRESULT WINAPI RegExp2_put_Pattern(IRegExp2 *iface, BSTR pattern)
|
||||||
{
|
{
|
||||||
RegExp2 *This = impl_from_IRegExp2(iface);
|
RegExp2 *This = impl_from_IRegExp2(iface);
|
||||||
WCHAR *p;
|
WCHAR *new_pattern;
|
||||||
DWORD size;
|
|
||||||
|
|
||||||
TRACE("(%p)->(%s)\n", This, wine_dbgstr_w(pattern));
|
TRACE("(%p)->(%s)\n", This, wine_dbgstr_w(pattern));
|
||||||
|
|
||||||
if(!pattern) {
|
if(pattern && *pattern) {
|
||||||
heap_free(This->pattern);
|
SIZE_T size = (SysStringLen(pattern)+1) * sizeof(WCHAR);
|
||||||
if(This->regexp) {
|
new_pattern = heap_alloc(size);
|
||||||
regexp_destroy(This->regexp);
|
if(!new_pattern)
|
||||||
This->regexp = NULL;
|
|
||||||
}
|
|
||||||
This->pattern = NULL;
|
|
||||||
return S_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
size = (SysStringLen(pattern)+1) * sizeof(WCHAR);
|
|
||||||
p = heap_alloc(size);
|
|
||||||
if(!p)
|
|
||||||
return E_OUTOFMEMORY;
|
return E_OUTOFMEMORY;
|
||||||
|
memcpy(new_pattern, pattern, size);
|
||||||
|
}else {
|
||||||
|
new_pattern = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
heap_free(This->pattern);
|
heap_free(This->pattern);
|
||||||
This->pattern = p;
|
This->pattern = new_pattern;
|
||||||
memcpy(p, pattern, size);
|
|
||||||
if(This->regexp) {
|
if(This->regexp) {
|
||||||
regexp_destroy(This->regexp);
|
regexp_destroy(This->regexp);
|
||||||
This->regexp = NULL;
|
This->regexp = NULL;
|
||||||
|
|
Loading…
Reference in New Issue