aboutsummaryrefslogtreecommitdiff
path: root/src/memdb.c
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2019-01-22 16:43:47 +0000
committerdrh <drh@noemail.net>2019-01-22 16:43:47 +0000
commitf186f0b0588a9f4641d865eb0bf07c29c7324265 (patch)
tree6a0e58f9a9f090858c05bdddd3328d8a6c71feda /src/memdb.c
parent178edcd774d21a1eab9e2b92d76c60950c4da894 (diff)
downloadsqlite-f186f0b0588a9f4641d865eb0bf07c29c7324265.tar.gz
sqlite-f186f0b0588a9f4641d865eb0bf07c29c7324265.zip
Fix the SQLITE_DESERIALIZE_READONLY feature so that it does not cause
an assertion fault in the pager. FossilOrigin-Name: b9eccef7825c61980678599358b62bc394283124653061ce163ead0c653f481d
Diffstat (limited to 'src/memdb.c')
-rw-r--r--src/memdb.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/memdb.c b/src/memdb.c
index c6603a1c8..e7366961f 100644
--- a/src/memdb.c
+++ b/src/memdb.c
@@ -188,7 +188,7 @@ static int memdbWrite(
sqlite_int64 iOfst
){
MemFile *p = (MemFile *)pFile;
- if( p->mFlags & SQLITE_DESERIALIZE_READONLY ) return SQLITE_READONLY;
+ if( NEVER(p->mFlags & SQLITE_DESERIALIZE_READONLY) ) return SQLITE_READONLY;
if( iOfst+iAmt>p->sz ){
int rc;
if( iOfst+iAmt>p->szAlloc
@@ -238,6 +238,11 @@ static int memdbFileSize(sqlite3_file *pFile, sqlite_int64 *pSize){
*/
static int memdbLock(sqlite3_file *pFile, int eLock){
MemFile *p = (MemFile *)pFile;
+ if( eLock>SQLITE_LOCK_SHARED
+ && (p->mFlags & SQLITE_DESERIALIZE_READONLY)!=0
+ ){
+ return SQLITE_READONLY;
+ }
p->eLock = eLock;
return SQLITE_OK;
}