From 8e97036147030262771bc785931128aa0496edf3 Mon Sep 17 00:00:00 2001 From: "D. Richard Hipp" Date: Wed, 20 Sep 2017 18:47:51 +0000 Subject: [PATCH] Size and performance optimization on sqlite3VdbeMemGrow(). --- src/vdbemem.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/vdbemem.c b/src/vdbemem.c index 4437de556a..403ad889cd 100644 --- a/src/vdbemem.c +++ b/src/vdbemem.c @@ -155,7 +155,7 @@ SQLITE_NOINLINE int sqlite3VdbeMemGrow(Mem *pMem, int n, int bPreserve){ assert( pMem->szMalloc==0 || pMem->szMalloc==sqlite3DbMallocSize(pMem->db, pMem->zMalloc) ); if( n<32 ) n = 32; - if( bPreserve && pMem->szMalloc>0 && pMem->z==pMem->zMalloc ){ + if( pMem->szMalloc>0 && bPreserve && pMem->z==pMem->zMalloc ){ pMem->z = pMem->zMalloc = sqlite3DbReallocOrFree(pMem->db, pMem->z, n); bPreserve = 0; }else{ @@ -171,7 +171,8 @@ SQLITE_NOINLINE int sqlite3VdbeMemGrow(Mem *pMem, int n, int bPreserve){ pMem->szMalloc = sqlite3DbMallocSize(pMem->db, pMem->zMalloc); } - if( bPreserve && pMem->z && ALWAYS(pMem->z!=pMem->zMalloc) ){ + if( bPreserve && pMem->z ){ + assert( pMem->z!=pMem->zMalloc ); memcpy(pMem->zMalloc, pMem->z, pMem->n); } if( (pMem->flags&MEM_Dyn)!=0 ){ -- 2.11.4.GIT