From: drh Date: Thu, 25 Oct 2012 23:47:27 +0000 (+0000) Subject: Further work on getting ssdsim to run. This is an incremental checkin to X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=refs%2Fheads%2Fssdsim;p=thirdparty%2Fsqlite.git Further work on getting ssdsim to run. This is an incremental checkin to save my place while jumping off to work on other things. FossilOrigin-Name: ae2f1627b1672e511be1ff132f2a3fb8f8bb7169 --- diff --git a/manifest b/manifest index 6a63d6791d..25eaf83d3f 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Merge\sthe\scommand-line\sshell\senhancements\sfrom\strunk.\s\sOther\sedits\stoward\ntrying\sto\sget\sssdsim\sto\srun. -D 2012-10-25T15:32:29.056 +C Further\swork\son\sgetting\sssdsim\sto\srun.\s\sThis\sis\san\sincremental\scheckin\sto\nsave\smy\splace\swhile\sjumping\soff\sto\swork\son\sother\sthings. +D 2012-10-25T23:47:27.493 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.in 5f4f26109f9d80829122e0e09f9cda008fa065fb F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 @@ -221,7 +221,7 @@ F src/test_rtree.c aba603c949766c4193f1068b91c787f57274e0d9 F src/test_schema.c 8c06ef9ddb240c7a0fcd31bc221a6a2aade58bf0 F src/test_server.c 2f99eb2837dfa06a4aacf24af24c6affdf66a84f F src/test_spellfix.c 76dd8d3111d2f5354c374f71fa23b752bd0b029c -F src/test_ssdsim.c b4b2ff870e31cdecaf5716c4373a7d9ffc1d3762 +F src/test_ssdsim.c bb4fefe91b9e4d4e3e09488814cc586575590ad4 F src/test_stat.c d1569c7a4839f13e80187e2c26b2ab4da2d03935 F src/test_superlock.c 2b97936ca127d13962c3605dbc9a4ef269c424cd F src/test_syscall.c a992d8c80ea91fbf21fb2dd570db40e77dd7e6ae @@ -1022,7 +1022,7 @@ F tool/vdbe-compress.tcl f12c884766bd14277f4fcedcae07078011717381 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381 F tool/win/sqlite.vsix 67d8a99aceb56384a81b3f30d6c71743146d2cc9 -P 9e6efcf05402cd0b259c9b2ae57e349800650bd7 317c80cba3688a97ade9cde622cc3bd94cf3436a -R b62d4d680a3785f5f27895a1b1bebbb9 +P 848f87e22fc6bfbbb7dbc7491c8a20cdd53b7420 +R b9ddcfef141182b6a9e7751152774567 U drh -Z cbf54f1147196dcbcbab5648835d5435 +Z 1dcb4d96fc4b1f34fb139b8208725f7a diff --git a/manifest.uuid b/manifest.uuid index 6203b38216..3aa4464c4f 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -848f87e22fc6bfbbb7dbc7491c8a20cdd53b7420 \ No newline at end of file +ae2f1627b1672e511be1ff132f2a3fb8f8bb7169 \ No newline at end of file diff --git a/src/test_ssdsim.c b/src/test_ssdsim.c index 33dbc3e69c..df3e525a87 100644 --- a/src/test_ssdsim.c +++ b/src/test_ssdsim.c @@ -310,7 +310,7 @@ static int ssdsimRead( ssdsim_file *p = (ssdsim_file *)pFile; ssdsim_inode *pInode = p->pInode; int rc = SQLITE_OK; - int lpn, ppn, n; + int lpn, ppn, n, mx; unsigned char *pOut = (unsigned char*)zBuf; unsigned char *pContent; while( iAmt>0 ){ @@ -322,9 +322,8 @@ static int ssdsimRead( lpn = pInode->aiPage[iOfst/g.szPage]; ppn = ssdsimCoreLpnToPpn(lpn, 0); n = iAmt; - if( (iOfst+n-1)*g.szPage > lpn ){ - n = (lpn+1)*g.szPage - iOfst; - } + mx = g.szPage - iOfst%g.szPage; + if( n>mx ) n = mx; if( ppn>=0 && ppnlen/g.szPage; - nNew = (iOfst+iAmt)/g.szPage; + nOld = (pInode->len+g.szPage-1)/g.szPage; + nNew = (iOfst+iAmt+g.szPage-1)/g.szPage; if( nOldaiPage, nNew*sizeof(int)); if( aiPage==0 ) return SQLITE_NOMEM; @@ -370,19 +369,17 @@ static int ssdsimWrite( } } while( iAmt>0 ){ - int n; + int n, mx; lpn = pInode->aiPage[iOfst/g.szPage]; if( lpn<0 ){ lpn = ssdsimCoreLpnAlloc(); if( lpn<0 ) return SQLITE_FULL; - pInode->aiPage[iOfst/g.szPage]; } ppn = ssdsimCoreLpnToPpn(lpn, 1); if( ppn<0 ) return SQLITE_NOMEM; n = iAmt; - if( (iOfst+n-1)*g.szPage > lpn ){ - n = (lpn+1)*g.szPage - iOfst; - } + mx = g.szPage - iOfst%g.szPage; + if( n>mx ) n = mx; pDest = g.apPage[ppn]; memcpy(pDest, pIn, n); iOfst += n; @@ -752,8 +749,7 @@ static int ssdsimDelete(sqlite3_vfs *pVfs, const char *zPath, int dirSync){ if( ssdsimInit() ) return SQLITE_CANTOPEN; pInode = ssdsimFindInode(zPath); - if( pInode==0 ) return SQLITE_NOTFOUND; - ssdsimDeleteInode(pInode); + if( pInode ) ssdsimDeleteInode(pInode); return SQLITE_OK; }