Index: src/dbstat.c ================================================================== --- src/dbstat.c +++ src/dbstat.c @@ -252,18 +252,24 @@ *ppCursor = (sqlite3_vtab_cursor *)pCsr; return SQLITE_OK; } -static void statClearPage(StatPage *p){ +static void statClearCells(StatPage *p){ int i; if( p->aCell ){ for(i=0; inCell; i++){ sqlite3_free(p->aCell[i].aOvfl); } sqlite3_free(p->aCell); } + p->nCell = 0; + p->aCell = 0; +} + +static void statClearPage(StatPage *p){ + statClearCells(p); sqlite3PagerUnref(p->pPg); sqlite3_free(p->zPath); memset(p, 0, sizeof(StatPage)); } @@ -415,11 +421,11 @@ return SQLITE_OK; statPageIsCorrupt: p->flags = 0; - p->nCell = 0; + statClearCells(p); return SQLITE_OK; } /* ** Populate the pCsr->iOffset and pCsr->szPage member variables. Based on