When masking bits off of sqlite3.flags, make sure the mask is 64 bits
in size so as not to accidentally mask of high-order bits.
FossilOrigin-Name: 53d3b169d8e1892163526caff2c843302c92e280fdeff6831e23a9bb15b82be3
diff --git a/src/btree.c b/src/btree.c
index 137500e..9046a72 100644
--- a/src/btree.c
+++ b/src/btree.c
@@ -9856,7 +9856,7 @@
}
#endif
testcase( pBt->db->flags & SQLITE_CellSizeCk );
- pBt->db->flags &= ~SQLITE_CellSizeCk;
+ pBt->db->flags &= ~(u64)SQLITE_CellSizeCk;
for(i=0; (int)i<nRoot && sCheck.mxErr; i++){
i64 notUsed;
if( aRoot[i]==0 ) continue;
diff --git a/src/loadext.c b/src/loadext.c
index 966d2dd..214390e 100644
--- a/src/loadext.c
+++ b/src/loadext.c
@@ -650,7 +650,7 @@
if( onoff ){
db->flags |= SQLITE_LoadExtension|SQLITE_LoadExtFunc;
}else{
- db->flags &= ~(SQLITE_LoadExtension|SQLITE_LoadExtFunc);
+ db->flags &= ~(u64)(SQLITE_LoadExtension|SQLITE_LoadExtFunc);
}
sqlite3_mutex_leave(db->mutex);
return SQLITE_OK;
diff --git a/src/main.c b/src/main.c
index a4049f2..627d24e 100644
--- a/src/main.c
+++ b/src/main.c
@@ -847,7 +847,7 @@
if( onoff>0 ){
db->flags |= aFlagOp[i].mask;
}else if( onoff==0 ){
- db->flags &= ~aFlagOp[i].mask;
+ db->flags &= ~(u64)aFlagOp[i].mask;
}
if( oldFlags!=db->flags ){
sqlite3ExpirePreparedStatements(db, 0);
@@ -1310,7 +1310,7 @@
/* Any deferred constraint violations have now been resolved. */
db->nDeferredCons = 0;
db->nDeferredImmCons = 0;
- db->flags &= ~SQLITE_DeferFKs;
+ db->flags &= ~(u64)SQLITE_DeferFKs;
/* If one has been configured, invoke the rollback-hook callback */
if( db->xRollbackCallback && (inTrans || !db->autoCommit) ){
diff --git a/src/pragma.c b/src/pragma.c
index ada652c..2f27d11 100644
--- a/src/pragma.c
+++ b/src/pragma.c
@@ -816,7 +816,7 @@
if( sqlite3GetBoolean(zRight, size!=0) ){
db->flags |= SQLITE_CacheSpill;
}else{
- db->flags &= ~SQLITE_CacheSpill;
+ db->flags &= ~(u64)SQLITE_CacheSpill;
}
setAllPagerFlags(db);
}
diff --git a/src/prepare.c b/src/prepare.c
index c470a54..ad07eca 100644
--- a/src/prepare.c
+++ b/src/prepare.c
@@ -293,7 +293,7 @@
** indices that the user might have created.
*/
if( iDb==0 && meta[BTREE_FILE_FORMAT-1]>=4 ){
- db->flags &= ~SQLITE_LegacyFileFmt;
+ db->flags &= ~(u64)SQLITE_LegacyFileFmt;
}
/* Read the schema information out of the schema tables
diff --git a/src/select.c b/src/select.c
index 68f2c9f..a275cb4 100644
--- a/src/select.c
+++ b/src/select.c
@@ -2080,7 +2080,7 @@
u64 savedFlags;
savedFlags = db->flags;
- db->flags &= ~SQLITE_FullColNames;
+ db->flags &= ~(u64)SQLITE_FullColNames;
db->flags |= SQLITE_ShortColNames;
sqlite3SelectPrep(pParse, pSelect, 0);
if( pParse->nErr ) return 0;
diff --git a/src/vacuum.c b/src/vacuum.c
index 5017dbf..8416b16 100644
--- a/src/vacuum.c
+++ b/src/vacuum.c
@@ -166,7 +166,7 @@
saved_mTrace = db->mTrace;
db->flags |= SQLITE_WriteSchema | SQLITE_IgnoreChecks;
db->mDbFlags |= DBFLAG_PreferBuiltin | DBFLAG_Vacuum;
- db->flags &= ~(SQLITE_ForeignKeys | SQLITE_ReverseOrder
+ db->flags &= ~(u64)(SQLITE_ForeignKeys | SQLITE_ReverseOrder
| SQLITE_Defensive | SQLITE_CountRows);
db->mTrace = 0;
diff --git a/src/vdbe.c b/src/vdbe.c
index 14f3e1b..2803330 100644
--- a/src/vdbe.c
+++ b/src/vdbe.c
@@ -7086,7 +7086,7 @@
rc = sqlite3VdbeChangeEncoding(pName, SQLITE_UTF8);
if( rc ) goto abort_due_to_error;
rc = pVtab->pModule->xRename(pVtab, pName->z);
- if( isLegacy==0 ) db->flags &= ~SQLITE_LegacyAlter;
+ if( isLegacy==0 ) db->flags &= ~(u64)SQLITE_LegacyAlter;
sqlite3VtabImportErrmsg(p, pVtab);
p->expired = 0;
if( rc ) goto abort_due_to_error;
diff --git a/src/vdbeaux.c b/src/vdbeaux.c
index 0ed9e81..40a6331 100644
--- a/src/vdbeaux.c
+++ b/src/vdbeaux.c
@@ -2855,7 +2855,7 @@
}else{
db->nDeferredCons = 0;
db->nDeferredImmCons = 0;
- db->flags &= ~SQLITE_DeferFKs;
+ db->flags &= ~(u64)SQLITE_DeferFKs;
sqlite3CommitInternalChanges(db);
}
}else{