]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Always use the sqlite3VdbeDeleteAuxdata() routine for clearing auxdata on
authordrh <drh@noemail.net>
Mon, 22 Feb 2016 16:04:31 +0000 (16:04 +0000)
committerdrh <drh@noemail.net>
Mon, 22 Feb 2016 16:04:31 +0000 (16:04 +0000)
function parameter, rather than having a separate deleteAuxdataFromFrame()
for doing the job for trigger frames.

FossilOrigin-Name: 64386fa339adb91439da979d74062f67a6ec68fd

manifest
manifest.uuid
src/vdbe.c
src/vdbeInt.h
src/vdbeaux.c

index 82a52654982bdfaf3f0d1b4116db52750ae48d41..ee2216461326346a7fe0f461fc237414840ca6eb 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Avoid\screating\sa\smaster\sjournal\sunless\stwo\sor\smore\sdatabases\sin\sthe\ntransaction\scan\sactually\sbenefit\sfrom\sthat\smaster\sjournal.
-D 2016-02-22T14:57:38.065
+C Always\suse\sthe\ssqlite3VdbeDeleteAuxdata()\sroutine\sfor\sclearing\sauxdata\son\nfunction\sparameter,\srather\sthan\shaving\sa\sseparate\sdeleteAuxdataFromFrame()\nfor\sdoing\sthe\sjob\sfor\strigger\sframes.
+D 2016-02-22T16:04:31.519
 F Makefile.in 4e90dc1521879022aa9479268a4cd141d1771142
 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
 F Makefile.msc 28fc4ee02333996d31b3602b39eeb8e609a89ce4
@@ -414,11 +414,11 @@ F src/update.c a7eeeaffad59c6506f01303a071dac11de8269ca
 F src/utf.c 699001c79f28e48e9bcdf8a463da029ea660540c
 F src/util.c 38c06684c922694809ccb988a13562c16890a3d5
 F src/vacuum.c feb1eabb20987983d9350cad98299b21fa811f52
-F src/vdbe.c 822e44c1dd859794f8c414e8bae4d96ac1fa774d
+F src/vdbe.c 87ae3a5657fefed7875f3eb30e7ababd48013d71
 F src/vdbe.h c743791f723049db94f009e3e30958952bc2d512
-F src/vdbeInt.h 581e5bff9a401fabdb917b816503cda7356ec3e1
+F src/vdbeInt.h 84827a809229917fdd3cc05af719dbb61314a5a3
 F src/vdbeapi.c 95b1f8e527240a18a9aea41a655b013bf07a7009
-F src/vdbeaux.c 51aaf15e5c29512423429cc0e0477e08f7181514
+F src/vdbeaux.c 9583c5c05a75feb699591c9f24e4750def6537fb
 F src/vdbeblob.c 3b570b730109e8f653d9d2081649f6e7015113db
 F src/vdbemem.c be8381ed6de54eb9cb9dfa802823cdeb5166d855
 F src/vdbesort.c 307460bfa4de4d1c3901fcd42089159131e34062
@@ -1429,7 +1429,7 @@ F tool/vdbe_profile.tcl 246d0da094856d72d2c12efec03250d71639d19f
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh a98af506df552f3b3c0d904f94e4cdc4e1a6d598
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P 9230ba6c01f4a550d92a0cbbf36dbe81af14fbfc
-R 28c7602ad1de5114aacb14204e4f7226
+P 3ed1890612bd45bd9c72f670d2cbb0b8fbd35d92
+R 087e6cf717ab51d03c5c0e76eb47f593
 U drh
-Z aad5fe626dac38bb4fd331764966d6a1
+Z ce8b779f1a9ea7c56d4a99bdf5d3c13f
index 4ab1f4a5a51da6f99647303188004faaa766da81..e6907d43a9390ed2c6b02d0c036d9473fdf69b9d 100644 (file)
@@ -1 +1 @@
-3ed1890612bd45bd9c72f670d2cbb0b8fbd35d92
\ No newline at end of file
+64386fa339adb91439da979d74062f67a6ec68fd
\ No newline at end of file
index 0cb7f5b24ba53ab24f3db1619196bc246fbd50a8..3351a4455148a828589578b65580a2a11695bba9 100644 (file)
@@ -1679,7 +1679,7 @@ case OP_Function: {
       sqlite3VdbeError(p, "%s", sqlite3_value_text(pCtx->pOut));
       rc = pCtx->isError;
     }
-    sqlite3VdbeDeleteAuxData(p, pCtx->iOp, pOp->p1);
+    sqlite3VdbeDeleteAuxData(db, &p->pAuxData, pCtx->iOp, pOp->p1);
     if( rc ) goto abort_due_to_error;
   }
 
index a64f3067dc4719a82827ab0286c6842b52f368c6..710c725e62c0c569f0a50616c0353a02675a304b 100644 (file)
@@ -444,7 +444,7 @@ u8 sqlite3VdbeOneByteSerialTypeLen(u8);
 u32 sqlite3VdbeSerialType(Mem*, int, u32*);
 u32 sqlite3VdbeSerialPut(unsigned char*, Mem*, u32);
 u32 sqlite3VdbeSerialGet(const unsigned char*, u32, Mem*);
-void sqlite3VdbeDeleteAuxData(Vdbe*, int, int);
+void sqlite3VdbeDeleteAuxData(sqlite3*, AuxData**, int, int);
 
 int sqlite2BtreeKeyCompare(BtCursor *, const void *, int, int, int *);
 int sqlite3VdbeIdxKeyCompare(sqlite3*,VdbeCursor*,UnpackedRecord*,int*);
index 4f539f0a29d372a34b3758041a804516e5617c7f..8065c290c1ef6b93522fcbd562762145ecaa0507 100644 (file)
@@ -1476,21 +1476,6 @@ static void releaseMemArray(Mem *p, int N){
   }
 }
 
-/*
-** Delete the linked list of AuxData structures attached to frame *p.
-*/
-static void deleteAuxdataInFrame(sqlite3 *db, VdbeFrame *p){
-  AuxData *pAux = p->pAuxData;
-  while( pAux ){
-    AuxData *pNext = pAux->pNext;
-    if( pAux->xDelete ){
-      pAux->xDelete(pAux->pAux);
-    }
-    sqlite3DbFree(db, pAux);
-    pAux = pNext;
-  }
-}
-
 /*
 ** Delete a VdbeFrame object and its contents. VdbeFrame objects are
 ** allocated by the OP_Program opcode in sqlite3VdbeExec().
@@ -1503,7 +1488,7 @@ void sqlite3VdbeFrameDelete(VdbeFrame *p){
     sqlite3VdbeFreeCursor(p->v, apCsr[i]);
   }
   releaseMemArray(aMem, p->nChildMem);
-  deleteAuxdataInFrame(p->v->db, p);
+  sqlite3VdbeDeleteAuxData(p->v->db, &p->pAuxData, -1, 0);
   sqlite3DbFree(p->v->db, p);
 }
 
@@ -2032,7 +2017,7 @@ int sqlite3VdbeFrameRestore(VdbeFrame *pFrame){
   v->db->lastRowid = pFrame->lastRowid;
   v->nChange = pFrame->nChange;
   v->db->nChange = pFrame->nDbChange;
-  sqlite3VdbeDeleteAuxData(v, -1, 0);
+  sqlite3VdbeDeleteAuxData(v->db, &v->pAuxData, -1, 0);
   v->pAuxData = pFrame->pAuxData;
   pFrame->pAuxData = 0;
   return pFrame->pc;
@@ -2066,7 +2051,7 @@ static void closeAllCursors(Vdbe *p){
   }
 
   /* Delete any auxdata allocations made by the VM */
-  if( p->pAuxData ) sqlite3VdbeDeleteAuxData(p, -1, 0);
+  if( p->pAuxData ) sqlite3VdbeDeleteAuxData(p->db, &p->pAuxData, -1, 0);
   assert( p->pAuxData==0 );
 }
 
@@ -2914,8 +2899,7 @@ int sqlite3VdbeFinalize(Vdbe *p){
 **    * the corresponding bit in argument mask is clear (where the first
 **      function parameter corresponds to bit 0 etc.).
 */
-void sqlite3VdbeDeleteAuxData(Vdbe *pVdbe, int iOp, int mask){
-  AuxData **pp = &pVdbe->pAuxData;
+void sqlite3VdbeDeleteAuxData(sqlite3 *db, AuxData **pp, int iOp, int mask){
   while( *pp ){
     AuxData *pAux = *pp;
     if( (iOp<0)
@@ -2926,7 +2910,7 @@ void sqlite3VdbeDeleteAuxData(Vdbe *pVdbe, int iOp, int mask){
         pAux->xDelete(pAux->pAux);
       }
       *pp = pAux->pNext;
-      sqlite3DbFree(pVdbe->db, pAux);
+      sqlite3DbFree(db, pAux);
     }else{
       pp= &pAux->pNext;
     }