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; > >