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.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()
|
||||
|
|
|
@ -1189,29 +1189,23 @@ static HRESULT WINAPI RegExp2_get_Pattern(IRegExp2 *iface, BSTR *pPattern)
|
|||
static HRESULT WINAPI RegExp2_put_Pattern(IRegExp2 *iface, BSTR pattern)
|
||||
{
|
||||
RegExp2 *This = impl_from_IRegExp2(iface);
|
||||
WCHAR *p;
|
||||
DWORD size;
|
||||
WCHAR *new_pattern;
|
||||
|
||||
TRACE("(%p)->(%s)\n", This, wine_dbgstr_w(pattern));
|
||||
|
||||
if(!pattern) {
|
||||
heap_free(This->pattern);
|
||||
if(This->regexp) {
|
||||
regexp_destroy(This->regexp);
|
||||
This->regexp = NULL;
|
||||
}
|
||||
This->pattern = NULL;
|
||||
return S_OK;
|
||||
if(pattern && *pattern) {
|
||||
SIZE_T size = (SysStringLen(pattern)+1) * sizeof(WCHAR);
|
||||
new_pattern = heap_alloc(size);
|
||||
if(!new_pattern)
|
||||
return E_OUTOFMEMORY;
|
||||
memcpy(new_pattern, pattern, size);
|
||||
}else {
|
||||
new_pattern = NULL;
|
||||
}
|
||||
|
||||
size = (SysStringLen(pattern)+1) * sizeof(WCHAR);
|
||||
p = heap_alloc(size);
|
||||
if(!p)
|
||||
return E_OUTOFMEMORY;
|
||||
|
||||
heap_free(This->pattern);
|
||||
This->pattern = p;
|
||||
memcpy(p, pattern, size);
|
||||
This->pattern = new_pattern;
|
||||
|
||||
if(This->regexp) {
|
||||
regexp_destroy(This->regexp);
|
||||
This->regexp = NULL;
|
||||
|
|
Loading…
Reference in New Issue