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

Fix savepoint related bugs. A rollback caused by an IO error or "OR ROLLBACK" clause while one or more savepoints were open was leaving the sqlite3 structure in an invalid state. (CVS 6128)

FossilOrigin-Name: e5d42c69a3b325ca12f53184e33964230acbdd1f
This commit is contained in:
danielk1977
2009-01-07 08:12:16 +00:00
parent f2a84e3ca6
commit fc158bf920
5 changed files with 65 additions and 13 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.429 2009/01/03 14:04:39 drh Exp $
** $Id: vdbeaux.c,v 1.430 2009/01/07 08:12:16 danielk1977 Exp $
*/
#include "sqliteInt.h"
#include <ctype.h>
@@ -1583,6 +1583,7 @@ int sqlite3VdbeHalt(Vdbe *p){
*/
invalidateCursorsOnModifiedBtrees(db);
sqlite3RollbackAll(db);
sqlite3CloseSavepoints(db);
db->autoCommit = 1;
}
}
@@ -1627,6 +1628,7 @@ int sqlite3VdbeHalt(Vdbe *p){
}else{
invalidateCursorsOnModifiedBtrees(db);
sqlite3RollbackAll(db);
sqlite3CloseSavepoints(db);
db->autoCommit = 1;
}
}