From ce5c42be280e37bd8c42af160656c7040b4c5021 Mon Sep 17 00:00:00 2001 From: dan Date: Wed, 17 Oct 2012 15:28:26 +0000 Subject: [PATCH] Change the way the tcl crash-test code works to avoid triggering an assert() in os_unix.c. FossilOrigin-Name: b8b7b8f9e97a5c34f0f199b46347e0bf85005a4d --- manifest | 14 +++++++------- manifest.uuid | 2 +- src/test6.c | 19 ++++++++++--------- 3 files changed, 18 insertions(+), 17 deletions(-) diff --git a/manifest b/manifest index b49c331c10..c2392483ed 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Remove\san\sincorrect\s"#ifndef\sSQLITE_OMIT_AUTOVACUUM"\sfrom\spager. -D 2012-10-17T13:15:02.029 +C Change\sthe\sway\sthe\stcl\scrash-test\scode\sworks\sto\savoid\striggering\san\sassert()\sin\sos_unix.c. +D 2012-10-17T15:28:26.766 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.in 5f4f26109f9d80829122e0e09f9cda008fa065fb F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 @@ -189,7 +189,7 @@ F src/test2.c 4178056dd1e7d70f954ad8a1e3edb71a2a784daf F src/test3.c 3c3c2407fa6ec7a19e24ae23f7cb439d0275a60d F src/test4.c bf9fa9bece01de08e6f5e02314e4af5c13590dfa F src/test5.c a6d1ac55ac054d0b2b8f37b5e655b6c92645a013 -F src/test6.c 417e1e214734393c24a8ee80b41485a9c4169123 +F src/test6.c 0e47537ba157896ffaab64228fbf3bc1bd13622e F src/test7.c 2e0781754905c8adc3268d8f0967e7633af58843 F src/test8.c 8bcce65e5ee027fbfd7da41d28371aabbfd369ff F src/test9.c bea1e8cf52aa93695487badedd6e1886c321ea60 @@ -1021,7 +1021,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 2c3af657fee6153842d660a6ce29aa7d791ebd38 -R d55cc10c39c57d8a9dc0166111e15a7c -U drh -Z 4c6ce6c173b785cd15d66fe798355adb +P bf44d73d3e4ec403947d361d2fa150cc240c4d45 +R 952a26a9f71a580bdba3323d9c78b6cc +U dan +Z f98feedce000e0221af4d7c87f85bbd8 diff --git a/manifest.uuid b/manifest.uuid index 8b9d309d8c..e0ee1470d7 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -bf44d73d3e4ec403947d361d2fa150cc240c4d45 \ No newline at end of file +b8b7b8f9e97a5c34f0f199b46347e0bf85005a4d \ No newline at end of file diff --git a/src/test6.c b/src/test6.c index bae6b65dc2..a6054891b0 100644 --- a/src/test6.c +++ b/src/test6.c @@ -628,18 +628,19 @@ static int cfOpen( ** to read data from the 512-byte locking region of a file opened ** with the SQLITE_OPEN_MAIN_DB flag. This region of a database file ** never contains valid data anyhow. So avoid doing such a read here. + ** + ** UPDATE: It also contains an assert() verifying that each call + ** to the xRead() method reads less than 128KB of data. */ const int isDb = (flags&SQLITE_OPEN_MAIN_DB); - i64 iChunk = pWrapper->iSize; - if( iChunk>PENDING_BYTE && isDb ){ - iChunk = PENDING_BYTE; - } + i64 iOff; + memset(pWrapper->zData, 0, pWrapper->nData); - rc = sqlite3OsRead(pReal, pWrapper->zData, (int)iChunk, 0); - if( SQLITE_OK==rc && pWrapper->iSize>(PENDING_BYTE+512) && isDb ){ - i64 iOff = PENDING_BYTE+512; - iChunk = pWrapper->iSize - iOff; - rc = sqlite3OsRead(pReal, &pWrapper->zData[iOff], (int)iChunk, iOff); + for(iOff=0; iOffiSize; iOff += 512){ + int nRead = pWrapper->iSize - iOff; + if( nRead>512 ) nRead = 512; + if( isDb && iOff==PENDING_BYTE ) continue; + rc = sqlite3OsRead(pReal, &pWrapper->zData[iOff], nRead, iOff); } }else{ rc = SQLITE_NOMEM; -- 2.47.2