mirror of
https://github.com/sqlite/sqlite.git
synced 2025-07-30 19:03:16 +03:00
Further attempted improvements at fast-fail for an inaccessible
database file. FossilOrigin-Name: cdeb21a312d4f1a9e3009a0baf0af33857c172f7bc22bca047dcd46a03e9c964
This commit is contained in:
@ -5309,6 +5309,7 @@ static int winOpen(
|
||||
void *zConverted; /* Filename in OS encoding */
|
||||
const char *zUtf8Name = zName; /* Filename in UTF-8 encoding */
|
||||
int cnt = 0;
|
||||
int isRO = 0; /* file is known to be accessible readonly */
|
||||
|
||||
/* If argument zPath is a NULL pointer, this function is required to open
|
||||
** a temporary file. Use this buffer to store the file name in.
|
||||
@ -5473,7 +5474,7 @@ static int winOpen(
|
||||
&extendedParameters);
|
||||
if( h!=INVALID_HANDLE_VALUE ) break;
|
||||
if( isReadWrite && cnt==0 ){
|
||||
int rc2, isRO = 0;
|
||||
int rc2;
|
||||
sqlite3BeginBenignMalloc();
|
||||
rc2 = winAccess(pVfs, zUtf8Name, SQLITE_ACCESS_READ|NORETRY, &isRO);
|
||||
sqlite3EndBenignMalloc();
|
||||
@ -5490,7 +5491,7 @@ static int winOpen(
|
||||
NULL);
|
||||
if( h!=INVALID_HANDLE_VALUE ) break;
|
||||
if( isReadWrite && cnt==0 ){
|
||||
int rc2, isRO = 0;
|
||||
int rc2;
|
||||
sqlite3BeginBenignMalloc();
|
||||
rc2 = winAccess(pVfs, zUtf8Name, SQLITE_ACCESS_READ|NORETRY, &isRO);
|
||||
sqlite3EndBenignMalloc();
|
||||
@ -5510,7 +5511,7 @@ static int winOpen(
|
||||
NULL);
|
||||
if( h!=INVALID_HANDLE_VALUE ) break;
|
||||
if( isReadWrite && cnt==0 ){
|
||||
int rc2, isRO = 0;
|
||||
int rc2;
|
||||
sqlite3BeginBenignMalloc();
|
||||
rc2 = winAccess(pVfs, zUtf8Name, SQLITE_ACCESS_READ|NORETRY, &isRO);
|
||||
sqlite3EndBenignMalloc();
|
||||
@ -5527,7 +5528,7 @@ static int winOpen(
|
||||
if( h==INVALID_HANDLE_VALUE ){
|
||||
sqlite3_free(zConverted);
|
||||
sqlite3_free(zTmpname);
|
||||
if( isReadWrite && !isExclusive ){
|
||||
if( isReadWrite && isRO && !isExclusive ){
|
||||
return winOpen(pVfs, zName, id,
|
||||
((flags|SQLITE_OPEN_READONLY) &
|
||||
~(SQLITE_OPEN_CREATE|SQLITE_OPEN_READWRITE)),
|
||||
|
Reference in New Issue
Block a user