From 2e225a35b4242c36626a88973ee31704992b234e Mon Sep 17 00:00:00 2001 From: dan Date: Thu, 27 Apr 2023 13:55:29 +0000 Subject: [PATCH] Fix a problem on windows sometimes causing SQLITE_NOMEM to be returned if an error occurred while opening a temp file. FossilOrigin-Name: c22a39a6b28e3039fe453c0c0db98744b8a63ef9063cc3f6e0ed67d2506d34be --- manifest | 12 ++++++------ manifest.uuid | 2 +- src/os_win.c | 11 ++++++++--- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/manifest b/manifest index c941ae48fb..38d2562688 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\sa\stypo\sin\sa\sprintf()\sformat\sstring\sthe\ssessions\smodule. -D 2023-04-26T18:50:49.563 +C Fix\sa\sproblem\son\swindows\ssometimes\scausing\sSQLITE_NOMEM\sto\sbe\sreturned\sif\san\serror\soccurred\swhile\sopening\sa\stemp\sfile. +D 2023-04-27T13:55:29.757 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -618,7 +618,7 @@ F src/os_common.h 6c0eb8dd40ef3e12fe585a13e709710267a258e2c8dd1c40b1948a1d14582e F src/os_kv.c 4d39e1f1c180b11162c6dc4aa8ad34053873a639bac6baae23272fc03349986a F src/os_setup.h 6011ad7af5db4e05155f385eb3a9b4470688de6f65d6166b8956e58a3d872107 F src/os_unix.c 1b3ddb7814c4bf37f494c04d2ab30c1ced5b2c927267e1930ce7cd388787a96d -F src/os_win.c 295fe45f18bd86f2477f4cd79f3377c6f883ceb941b1f46808665c73747f2345 +F src/os_win.c 20c2f020b54fe6ae210c1f200efc097ac50e7e7b24f64c632c1b751ac1f96899 F src/os_win.h 7b073010f1451abe501be30d12f6bc599824944a F src/pager.c 9d36ddedc842e993c88c222ed914822dbd6f8ece3c648fde04468637012a034a F src/pager.h f82e9844166e1585f5786837ddc7709966138ced17f568c16af7ccf946c2baa3 @@ -2060,8 +2060,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 3e2da8a7e35c839128d26aac575605e1e34889e8ab3484440bdd65c4d752c6bb -R 4e23a1ec1e088b34c19a8052565eac29 +P 14d1c4a828660bc137dcea1bb4cc439e1ed3872867a0dab486f6a639ef3bcc45 +R 1e3870610983faacb84c1d55e8f701dd U dan -Z 09bae246348989754f2af6790026c07b +Z ef68dfd966e00e89b716183914f3d8f9 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 6ee1d6b0d8..ff4ed9d11e 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -14d1c4a828660bc137dcea1bb4cc439e1ed3872867a0dab486f6a639ef3bcc45 \ No newline at end of file +c22a39a6b28e3039fe453c0c0db98744b8a63ef9063cc3f6e0ed67d2506d34be \ No newline at end of file diff --git a/src/os_win.c b/src/os_win.c index abecf1b936..33275113ad 100644 --- a/src/os_win.c +++ b/src/os_win.c @@ -5197,7 +5197,7 @@ static int winOpen( if( isReadWrite ){ int rc2, isRO = 0; sqlite3BeginBenignMalloc(); - rc2 = winAccess(pVfs, zName, SQLITE_ACCESS_READ, &isRO); + rc2 = winAccess(pVfs, zUtf8Name, SQLITE_ACCESS_READ, &isRO); sqlite3EndBenignMalloc(); if( rc2==SQLITE_OK && isRO ) break; } @@ -5214,7 +5214,7 @@ static int winOpen( if( isReadWrite ){ int rc2, isRO = 0; sqlite3BeginBenignMalloc(); - rc2 = winAccess(pVfs, zName, SQLITE_ACCESS_READ, &isRO); + rc2 = winAccess(pVfs, zUtf8Name, SQLITE_ACCESS_READ, &isRO); sqlite3EndBenignMalloc(); if( rc2==SQLITE_OK && isRO ) break; } @@ -5234,7 +5234,7 @@ static int winOpen( if( isReadWrite ){ int rc2, isRO = 0; sqlite3BeginBenignMalloc(); - rc2 = winAccess(pVfs, zName, SQLITE_ACCESS_READ, &isRO); + rc2 = winAccess(pVfs, zUtf8Name, SQLITE_ACCESS_READ, &isRO); sqlite3EndBenignMalloc(); if( rc2==SQLITE_OK && isRO ) break; } @@ -5453,6 +5453,11 @@ static int winAccess( void *zConverted; UNUSED_PARAMETER(pVfs); + if( zFilename==0 ){ + *pResOut = 0; + return SQLITE_OK; + } + SimulateIOError( return SQLITE_IOERR_ACCESS; ); OSTRACE(("ACCESS name=%s, flags=%x, pResOut=%p\n", zFilename, flags, pResOut)); -- 2.47.2