-C Formerly,\swe\senabled\sfdatasync()\son\slinux\sonly.\s\sBut\snow\swe\slearn\sthat\nfdatasync()\sis\snot\ssupported\son\sAndroid.\s\sSo\swe\sdisable\sfdatasync()\son\nLinux\stoo.\s\sIt\scan\sbe\sreenabled\sat\scompile-time\sfor\sthose\swho\sreally\sneed\sit.
-D 2011-08-31T21:01:55.686
+C Avoid\susing\suninitialized\svariables\safter\sfailures\sin\sthe\smerge\ssort\scode.
+D 2011-08-31T23:57:22.695
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
F Makefile.in d314143fa6be24828021d3f583ad37d9afdce505
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
F src/vdbeaux.c de1e4cab060a45df9ebee68dd63543d14559f0e7
F src/vdbeblob.c f024f0bf420f36b070143c32b15cc7287341ffd3
F src/vdbemem.c 5e6effb96dd53d233361cbfaa3f0a43b9af689e9
-F src/vdbesort.c 8a61a6d731cbe612217edf9eece6197f37c9489e
+F src/vdbesort.c f3d043a1bab7409d4a23cd7a35287c3ac440a167
F src/vdbetrace.c 5d0dc3d5fd54878cc8d6d28eb41deb8d5885b114
F src/vtab.c 901791a47318c0562cd0c676a2c6ff1bc530e582
F src/wal.c 3154756177d6219e233d84291d5b05f4e06ff5e9
F tool/tostr.awk e75472c2f98dd76e06b8c9c1367f4ab07e122d06
F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
F tool/warnings.sh b7fdb2cc525f5ef4fa43c80e771636dd3690f9d2
-P 1b124af40a8fa4d3094f24a9213096b66411b8f9
-R e3c435a6ba2306a2d838c8b23577f672
+P 70b5b309568ac55565558d5456aca1e431cfd26b
+R 09e04eb9163c46e529a61f2438cff2a1
U drh
-Z 9e7ae74ddd5128c7f3fb2205f914d095
+Z bdb2832352809bf647849d42b7aa6060
){
int rc; /* Return Code */
int nRead; /* Number of bytes read */
- int nRec; /* Size of record in bytes */
- int iOff; /* Size of serialized size varint in bytes */
+ int nRec = 0; /* Size of record in bytes */
+ int iOff = 0; /* Size of serialized size varint in bytes */
nRead = pIter->iEof - pIter->iReadOff;
if( nRead>5 ) nRead = 5;
}
rc = sqlite3OsRead(pIter->pFile, pIter->aAlloc, nRead, pIter->iReadOff);
- iOff = getVarint32(pIter->aAlloc, nRec);
-
- if( rc==SQLITE_OK && (iOff+nRec)>nRead ){
- int nRead2; /* Number of extra bytes to read */
- if( (iOff+nRec)>pIter->nAlloc ){
- int nNew = pIter->nAlloc*2;
- while( (iOff+nRec)>nNew ) nNew = nNew*2;
- pIter->aAlloc = sqlite3DbReallocOrFree(db, pIter->aAlloc, nNew);
- if( !pIter->aAlloc ) return SQLITE_NOMEM;
- pIter->nAlloc = nNew;
+ if( rc==SQLITE_OK ){
+ iOff = getVarint32(pIter->aAlloc, nRec);
+ if( (iOff+nRec)>nRead ){
+ int nRead2; /* Number of extra bytes to read */
+ if( (iOff+nRec)>pIter->nAlloc ){
+ int nNew = pIter->nAlloc*2;
+ while( (iOff+nRec)>nNew ) nNew = nNew*2;
+ pIter->aAlloc = sqlite3DbReallocOrFree(db, pIter->aAlloc, nNew);
+ if( !pIter->aAlloc ) return SQLITE_NOMEM;
+ pIter->nAlloc = nNew;
+ }
+
+ nRead2 = iOff + nRec - nRead;
+ rc = sqlite3OsRead(
+ pIter->pFile, &pIter->aAlloc[nRead], nRead2, pIter->iReadOff+nRead
+ );
}
-
- nRead2 = iOff + nRec - nRead;
- rc = sqlite3OsRead(
- pIter->pFile, &pIter->aAlloc[nRead], nRead2, pIter->iReadOff+nRead
- );
}
- assert( nRec>0 || rc!=SQLITE_OK );
+ assert( rc!=SQLITE_OK || nRec>0 );
pIter->iReadOff += iOff+nRec;
pIter->nKey = nRec;
pIter->aKey = &pIter->aAlloc[iOff];
i64 nByte = 0; /* Total bytes in all opened PMAs */
/* Initialize the iterators. */
- for(i=0; rc==SQLITE_OK && i<SORTER_MAX_MERGE_COUNT; i++){
+ for(i=0; i<SORTER_MAX_MERGE_COUNT; i++){
VdbeSorterIter *pIter = &pSorter->aIter[i];
rc = vdbeSorterIterInit(db, pSorter, pSorter->iReadOff, pIter, &nByte);
pSorter->iReadOff = pIter->iEof;
- assert( pSorter->iReadOff<=pSorter->iWriteOff || rc!=SQLITE_OK );
- if( pSorter->iReadOff>=pSorter->iWriteOff ) break;
+ assert( rc!=SQLITE_OK || pSorter->iReadOff<=pSorter->iWriteOff );
+ if( rc!=SQLITE_OK || pSorter->iReadOff>=pSorter->iWriteOff ) break;
}
/* Initialize the aTree[] array. */