1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-11-14 00:22:38 +03:00

Remove an ALWAYS clause that could be false if an IO error within a statement executed by a virtual table caused an emergency rollback. (CVS 6859)

FossilOrigin-Name: 0cc705c2c4aa06c33361b11c06423ff76d9eed7c
This commit is contained in:
danielk1977
2009-07-08 08:05:35 +00:00
parent 0a45c270be
commit ecaecf929e
4 changed files with 22 additions and 14 deletions

View File

@@ -14,7 +14,7 @@
** to version 2.8.7, all this code was combined into the vdbe.c source file.
** But that file was getting too big so this subroutines were split out.
**
** $Id: vdbeaux.c,v 1.469 2009/07/07 02:44:07 drh Exp $
** $Id: vdbeaux.c,v 1.470 2009/07/08 08:05:35 danielk1977 Exp $
*/
#include "sqliteInt.h"
#include "vdbeInt.h"
@@ -1616,7 +1616,12 @@ static void invalidateCursorsOnModifiedBtrees(sqlite3 *db){
int sqlite3VdbeCloseStatement(Vdbe *p, int eOp){
sqlite3 *const db = p->db;
int rc = SQLITE_OK;
if( p->iStatement && ALWAYS(db->nStatement) ){
/* If p->iStatement is greater than zero, then this Vdbe opened a
** statement transaction that should be closed here. The only exception
** is that an IO error may have occured, causing an emergency rollback.
** In this case (db->nStatement==0), and there is nothing to do. */
if( p->iStatement && db->nStatement ){
int i;
const int iSavepoint = p->iStatement-1;