jscript: Fixed jsheap_grow implementation.
diff --git a/dlls/jscript/jsutils.c b/dlls/jscript/jsutils.c
index 040ec58..5e5121a 100644
--- a/dlls/jscript/jsutils.c
+++ b/dlls/jscript/jsutils.c
@@ -126,13 +126,18 @@
void *jsheap_grow(jsheap_t *heap, void *mem, DWORD size, DWORD inc)
{
+ void *ret;
+
if(mem == (BYTE*)heap->blocks[heap->last_block] + heap->offset-size
&& heap->offset+inc < block_size(heap->last_block)) {
heap->offset += inc;
return mem;
}
- return jsheap_alloc(heap, size+inc);
+ ret = jsheap_alloc(heap, size+inc);
+ if(ret) /* FIXME: avoid coppying for custom blocks */
+ memcpy(ret, mem, size);
+ return ret;
}
void jsheap_clear(jsheap_t *heap)
diff --git a/dlls/jscript/tests/regexp.js b/dlls/jscript/tests/regexp.js
index 4d513e0..e9f26ef 100644
--- a/dlls/jscript/tests/regexp.js
+++ b/dlls/jscript/tests/regexp.js
@@ -44,6 +44,10 @@
ok(RegExp.leftContext === " ", "RegExp.leftContext = " + RegExp.leftContext);
ok(RegExp.rightContext === "baaa", "RegExp.rightContext = " + RegExp.rightContext);
+m = /^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/.exec(
+ "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
+ok(m === null, "m is not null");
+
re = /a+/g;
ok(re.lastIndex === 0, "re.lastIndex = " + re.lastIndex);