-C Enhance\sthe\sdbstat\svirtual\stable\swith\sthe\sability\sto\sanalyze\sATTACHed\ndatabases.
-D 2015-05-07T14:41:56.372
+C Testing\simprovements\sand\scorner-case\sbug\sfixes\sfor\sthe\sdbstat\svirtual\stable.
+D 2015-05-07T18:29:04.911
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
F Makefile.in 08728ecbeddca339c77bfd564d3484b523dffdb1
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
F src/complete.c a5cf5b4b56390cfb7b8636e8f7ddef90258dd575
F src/ctime.c 98f89724adc891a1a4c655bee04e33e716e05887
F src/date.c e4d50b3283696836ec1036b695ead9a19e37a5ac
-F src/dbstat.c a9c0550fe90b765e1ac38760e1822bb7a1dfe857
+F src/dbstat.c db36fbd268f778ea1cdb8b0c1eb9828c1f10bf70
F src/delete.c 37964e6c1d73ff49cbea9ff690c9605fb15f600e
F src/expr.c 3fb2ab3ab69d15b4b75ae53fceb4e317f64cb306
F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
F tool/warnings.sh 0abfd78ceb09b7f7c27c688c8e3fe93268a13b32
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P cf975957b9ae671f34bb65f049acf351e650d437
-R e2036c834faa435fbd4ece874ab9ac24
+P 25ec09400b753fcb10a2aae57eb43dbf0548b7ca
+R a722e2e22e0813a5eab44a056c8ee5fc
U drh
-Z cef1b7912e822bf40819db2b70a8eba6
+Z 6e76fa3acb898a213eb3b606e7343836
static int statNext(sqlite3_vtab_cursor *pCursor){
int rc;
int nPayload;
+ char *z;
StatCursor *pCsr = (StatCursor *)pCursor;
StatTable *pTab = (StatTable *)pCursor->pVtab;
Btree *pBt = pTab->db->aDb[pTab->iDb].pBt;
rc = sqlite3PagerGet(pPager, iRoot, &pCsr->aPage[0].pPg);
pCsr->aPage[0].iPgno = iRoot;
pCsr->aPage[0].iCell = 0;
- pCsr->aPage[0].zPath = sqlite3_mprintf("/");
+ pCsr->aPage[0].zPath = z = sqlite3_mprintf("/");
pCsr->iPage = 0;
+ if( z==0 ) rc = SQLITE_NOMEM;
}else{
pCsr->isEof = 1;
return sqlite3_reset(pCsr->pStmt);
pCsr->zPagetype = "overflow";
pCsr->nCell = 0;
pCsr->nMxPayload = 0;
- pCsr->zPath = sqlite3_mprintf(
+ pCsr->zPath = z = sqlite3_mprintf(
"%s%.3x+%.6x", p->zPath, p->iCell, pCell->iOvfl
);
if( pCell->iOvfl<pCell->nOvfl-1 ){
}
pCell->iOvfl++;
statSizeAndOffset(pCsr);
- return SQLITE_OK;
+ return z==0 ? SQLITE_NOMEM : SQLITE_OK;
}
if( p->iRightChildPg ) break;
p->iCell++;
}
rc = sqlite3PagerGet(pPager, p[1].iPgno, &p[1].pPg);
p[1].iCell = 0;
- p[1].zPath = sqlite3_mprintf("%s%.3x/", p->zPath, p->iCell);
+ p[1].zPath = z = sqlite3_mprintf("%s%.3x/", p->zPath, p->iCell);
p->iCell++;
+ if( z==0 ) rc = SQLITE_NOMEM;
}
pCsr->nCell = p->nCell;
pCsr->nUnused = p->nUnused;
pCsr->nMxPayload = p->nMxPayload;
- pCsr->zPath = sqlite3_mprintf("%s", p->zPath);
+ pCsr->zPath = z = sqlite3_mprintf("%s", p->zPath);
+ if( z==0 ) rc = SQLITE_NOMEM;
nPayload = 0;
for(i=0; i<p->nCell; i++){
nPayload += p->aCell[i].nLocal;
StatCursor *pCsr = (StatCursor *)pCursor;
switch( i ){
case 0: /* name */
- sqlite3_result_text(ctx, pCsr->zName, -1, SQLITE_STATIC);
+ sqlite3_result_text(ctx, pCsr->zName, -1, SQLITE_TRANSIENT);
break;
case 1: /* path */
sqlite3_result_text(ctx, pCsr->zPath, -1, SQLITE_TRANSIENT);
case 8: /* pgoffset */
sqlite3_result_int64(ctx, pCsr->iOffset);
break;
- case 9: /* pgsize */
+ default: /* pgsize */
+ assert( i==9 );
sqlite3_result_int(ctx, pCsr->szPage);
break;
}