From d3789b98a7a6a4aa28bbd28ca795a386077a7941 Mon Sep 17 00:00:00 2001 From: dan Date: Fri, 22 Jan 2010 15:48:18 +0000 Subject: [PATCH] Fix two similar problems in fts3 that meant that an OOM error could cause a memory leak. FossilOrigin-Name: 701ef64b3dbf45e52043e79e528002bd4b7a21e2 --- ext/fts3/fts3_porter.c | 6 ++++-- ext/fts3/fts3_tokenizer1.c | 6 ++++-- manifest | 28 +++++++++------------------- manifest.uuid | 2 +- test/fts3malloc.test | 13 ++++++++++++- 5 files changed, 30 insertions(+), 25 deletions(-) diff --git a/ext/fts3/fts3_porter.c b/ext/fts3/fts3_porter.c index 4e68087299..4e30778179 100644 --- a/ext/fts3/fts3_porter.c +++ b/ext/fts3/fts3_porter.c @@ -605,9 +605,11 @@ static int porterNext( if( c->iOffset>iStartOffset ){ int n = c->iOffset-iStartOffset; if( n>c->nAllocated ){ + char *pNew; c->nAllocated = n+20; - c->zToken = sqlite3_realloc(c->zToken, c->nAllocated); - if( c->zToken==NULL ) return SQLITE_NOMEM; + pNew = sqlite3_realloc(c->zToken, c->nAllocated); + if( !pNew ) return SQLITE_NOMEM; + c->zToken = pNew; } porter_stemmer(&z[iStartOffset], n, c->zToken, pnBytes); *pzToken = c->zToken; diff --git a/ext/fts3/fts3_tokenizer1.c b/ext/fts3/fts3_tokenizer1.c index 654e55ddec..36c5a2f33d 100644 --- a/ext/fts3/fts3_tokenizer1.c +++ b/ext/fts3/fts3_tokenizer1.c @@ -182,9 +182,11 @@ static int simpleNext( if( c->iOffset>iStartOffset ){ int i, n = c->iOffset-iStartOffset; if( n>c->nTokenAllocated ){ + char *pNew; c->nTokenAllocated = n+20; - c->pToken = sqlite3_realloc(c->pToken, c->nTokenAllocated); - if( c->pToken==NULL ) return SQLITE_NOMEM; + pNew = sqlite3_realloc(c->pToken, c->nTokenAllocated); + if( !pNew ) return SQLITE_NOMEM; + c->pToken = pNew; } for(i=0; i