On Fri, Jan 25, 2013 at 04:26:59PM +0100, Piotr Caban wrote:
dlls/jscript/regexp.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/dlls/jscript/regexp.c b/dlls/jscript/regexp.c index 0d66551..fa2668c 100644 --- a/dlls/jscript/regexp.c +++ b/dlls/jscript/regexp.c @@ -3466,10 +3466,15 @@ static HRESULT regexp_match(script_ctx_t *ctx, jsdisp_t *dispex, jsstr_t *str, B break;
if(ret_size == i) {
if(ret)
ret = heap_realloc(ret, (ret_size <<= 1) * sizeof(match_result_t));
else
if(ret) {
match_result_t *old_ret = ret;
ret = heap_realloc(old_ret, (ret_size <<= 1) * sizeof(match_result_t));
if(!ret)
heap_free(old_ret);
Should be probably if (ret) heap_free(old_ret); here.
}else { ret = heap_alloc((ret_size=4) * sizeof(match_result_t));
} if(!ret) { hres = E_OUTOFMEMORY; break;
On 01/25/13 16:30, Marcus Meissner wrote:
On Fri, Jan 25, 2013 at 04:26:59PM +0100, Piotr Caban wrote:
@@ -3466,10 +3466,15 @@ static HRESULT regexp_match(script_ctx_t *ctx, jsdisp_t *dispex, jsstr_t *str, B break;
if(ret_size == i) {
if(ret)
ret = heap_realloc(ret, (ret_size <<= 1) * sizeof(match_result_t));
else
if(ret) {
match_result_t *old_ret = ret;
ret = heap_realloc(old_ret, (ret_size <<= 1) * sizeof(match_result_t));
if(!ret)
heap_free(old_ret);
Should be probably if (ret) heap_free(old_ret); here.
I think it's correct. I want to free old buffer in case of HeapRealloc error.