Module: wine Branch: master Commit: b3bafb60a278bfe23d67923d399d46f2da11dd46 URL: http://source.winehq.org/git/wine.git/?a=commit;h=b3bafb60a278bfe23d67923d39...
Author: Jacek Caban jacek@codeweavers.com Date: Fri Mar 30 18:19:48 2012 +0200
jscript: Fixed jsheap_grow implementation.
---
dlls/jscript/jsutils.c | 7 ++++++- dlls/jscript/tests/regexp.js | 4 ++++ 2 files changed, 10 insertions(+), 1 deletions(-)
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_alloc(jsheap_t *heap, DWORD size)
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(m[0] === "aa", "m[0] = " + m[0]); 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);