]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix an fts3 bug causing NEAR queries on uncommitted data to malfunction.
authordan <dan@noemail.net>
Thu, 1 Oct 2015 18:31:29 +0000 (18:31 +0000)
committerdan <dan@noemail.net>
Thu, 1 Oct 2015 18:31:29 +0000 (18:31 +0000)
FossilOrigin-Name: 6f90839e91024e2006042f5eb7f21ca5b47a9b4a

ext/fts3/fts3_write.c
manifest
manifest.uuid

index 6b7d5ef2aee17e908ca0c8c3ac8cee1de9935123..d5a408222ec790eb3ed7c9a32c33182fd954039e 100644 (file)
@@ -1322,14 +1322,19 @@ static int fts3SegReaderNext(
 
     if( fts3SegReaderIsPending(pReader) ){
       Fts3HashElem *pElem = *(pReader->ppNextElem);
-      if( pElem==0 ){
-        pReader->aNode = 0;
-      }else{
+      sqlite3_free(pReader->aNode);
+      pReader->aNode = 0;
+      if( pElem ){
+        char *aCopy;
         PendingList *pList = (PendingList *)fts3HashData(pElem);
+        int nCopy = pList->nData+1;
         pReader->zTerm = (char *)fts3HashKey(pElem);
         pReader->nTerm = fts3HashKeysize(pElem);
-        pReader->nNode = pReader->nDoclist = pList->nData + 1;
-        pReader->aNode = pReader->aDoclist = pList->aData;
+        aCopy = (char*)sqlite3_malloc(nCopy);
+        if( !aCopy ) return SQLITE_NOMEM;
+        memcpy(aCopy, pList->aData, nCopy);
+        pReader->nNode = pReader->nDoclist = nCopy;
+        pReader->aNode = pReader->aDoclist = aCopy;
         pReader->ppNextElem++;
         assert( pReader->aNode );
       }
@@ -1569,12 +1574,14 @@ int sqlite3Fts3MsrOvfl(
 ** second argument.
 */
 void sqlite3Fts3SegReaderFree(Fts3SegReader *pReader){
-  if( pReader && !fts3SegReaderIsPending(pReader) ){
-    sqlite3_free(pReader->zTerm);
+  if( pReader ){
+    if( !fts3SegReaderIsPending(pReader) ){
+      sqlite3_free(pReader->zTerm);
+    }
     if( !fts3SegReaderIsRootOnly(pReader) ){
       sqlite3_free(pReader->aNode);
-      sqlite3_blob_close(pReader->pBlob);
     }
+    sqlite3_blob_close(pReader->pBlob);
   }
   sqlite3_free(pReader);
 }
index b92913e6d53492446bc269ae367e5210d54a2576..8cd4cfd3fd55c3fb5dfb989d2a68842104b75105 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Add\sa\scorrupt\sdatabase\sto\stest/fuzzdata3.db\sto\svalidate\sthe\sprevious\ncheck-in.
-D 2015-09-30T14:30:19.646
+C Fix\san\sfts3\sbug\scausing\sNEAR\squeries\son\suncommitted\sdata\sto\smalfunction.
+D 2015-10-01T18:31:29.602
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in 2143eeef6d0cc26006ae5fc4bb242a4a8b973412
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -96,7 +96,7 @@ F ext/fts3/fts3_tokenizer.h 64c6ef6c5272c51ebe60fc607a896e84288fcbc3
 F ext/fts3/fts3_tokenizer1.c 5c98225a53705e5ee34824087478cf477bdb7004
 F ext/fts3/fts3_unicode.c a93f5edc0aff44ef8b06d7cb55b52026541ca145
 F ext/fts3/fts3_unicode2.c c3d01968d497bd7001e7dc774ba75b372738c057
-F ext/fts3/fts3_write.c 6f7233a06df17084d5cd968899053731bf953f94
+F ext/fts3/fts3_write.c f442223e4a1914dc1fc12b65af7e4f2c255fa47c
 F ext/fts3/fts3speed.tcl b54caf6a18d38174f1a6e84219950d85e98bb1e9
 F ext/fts3/mkfts3amal.tcl 252ecb7fe6467854f2aa237bf2c390b74e71f100
 F ext/fts3/tool/fts3view.c 8e53d0190a7b3443764bbd32ad47be2bd852026d
@@ -1389,7 +1389,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P 29f7227ff127202c53fe7c3b6558b3c101b0a7bc
-R b3d2e18288eecf437c1dfdc1db967b0d
-U drh
-Z 07034a5cbcc5358cdbeac30192aaba95
+P e796c0efb6cf17444b53af75046daf7d8fa82f78
+R 0cafe6c8cdead8895dc88237ddef8389
+U dan
+Z 654a1b4baa598b306106df1a114a779c
index 956cc32adcc40480ac27abc1796b69b3906d0933..becb519cfa5509da54f5a9d4ea49a85e9c0b92d0 100644 (file)
@@ -1 +1 @@
-e796c0efb6cf17444b53af75046daf7d8fa82f78
\ No newline at end of file
+6f90839e91024e2006042f5eb7f21ca5b47a9b4a
\ No newline at end of file