From: stephan Date: Mon, 19 Sep 2022 09:25:25 +0000 (+0000) Subject: Correct OPFS VFS xRead() to copy the result buffer if the result code is SQLITE_IOERR... X-Git-Tag: version-3.40.0~169^2~96 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=862281fc47187e37b10c1fbd46250de23ebef452;p=thirdparty%2Fsqlite.git Correct OPFS VFS xRead() to copy the result buffer if the result code is SQLITE_IOERR_SHORT_READ. FossilOrigin-Name: 56668f9902c6e896b6c63621a444444c6f58ee20f88a5feae97f1699be35892d --- diff --git a/ext/wasm/api/sqlite3-api-opfs.js b/ext/wasm/api/sqlite3-api-opfs.js index d6a9dbd22f..6446f2fb35 100644 --- a/ext/wasm/api/sqlite3-api-opfs.js +++ b/ext/wasm/api/sqlite3-api-opfs.js @@ -386,9 +386,10 @@ sqlite3.installOpfsVfs = function callee(asyncProxyUri = callee.defaultProxyUri) try { // FIXME(?): block until we finish copying the xRead result buffer. How? rc = opRun('xRead',{fid:pFile, n, offset}); - if(0!==rc) return rc; - let i = 0; - for(; i < n; ++i) wasm.setMemValue(pDest + i, f.sabView[i]); + if(0===rc || capi.SQLITE_IOERR_SHORT_READ===rc){ + let i = 0; + for(; i < n; ++i) wasm.setMemValue(pDest + i, f.sabView[i]); + } }catch(e){ error("xRead(",arguments,") failed:",e,f); rc = capi.SQLITE_IOERR_READ; diff --git a/manifest b/manifest index 5116b71772..c678bc0b2d 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Replace\sOPFS\sVFS\sxSleep()\simpl\swith\sa\smore\sefficient\sone\s(no\sWorker\sround-trip\sneeded). -D 2022-09-19T05:19:04.566 +C Correct\sOPFS\sVFS\sxRead()\sto\scopy\sthe\sresult\sbuffer\sif\sthe\sresult\scode\sis\sSQLITE_IOERR_SHORT_READ. +D 2022-09-19T09:25:25.676 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -484,7 +484,7 @@ F ext/wasm/api/post-js-header.js 0e853b78db83cb1c06b01663549e0e8b4f377f12f5a2d9a F ext/wasm/api/sqlite3-api-cleanup.js 8564a6077cdcaea9a9f428a019af8a05887f0131e6a2a1e72a7ff1145fadfe77 F ext/wasm/api/sqlite3-api-glue.js 366d580c8e5bf7fcf4c6dee6f646c31f5549bd417ea03a59a0acca00e8ecce30 F ext/wasm/api/sqlite3-api-oo1.js 2d13dddf0d2b4168a9249f124134d37924331e5b55e05dba18b6d661fbeefe48 -F ext/wasm/api/sqlite3-api-opfs.js d44f724990e99e242725c6623d6e1fbf843addabac13aabcd8adc8b7a02cb8b6 +F ext/wasm/api/sqlite3-api-opfs.js 6a48568014dcadee22ff8eaa13deab573fbae362a71194efb6c1214d41d6b48d F ext/wasm/api/sqlite3-api-prologue.js 4e3e26880d444000cca1b4f3ddfa9d49581dfecd1de9426080239ecc208c447d F ext/wasm/api/sqlite3-api-worker1.js ee4cf149cbacb63d06b536674f822aa5088b7e022cdffc69f1f36cebe2f9fea0 F ext/wasm/api/sqlite3-wasi.h 25356084cfe0d40458a902afb465df8c21fc4152c1d0a59b563a3fba59a068f9 @@ -2028,8 +2028,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 2e4a005bd35424caeaa99ace23162cf79e2ebdb159475ffad92b85dc864ad764 -R 7b4ce0e4c47ddeace77c92f8cdf4ccc9 +P b9773f164878b0a1b7c88cc7a6d1374ea95f64920065e8b2b178a1afffd82fe5 +R a6befd159a478cdd8d3c42193659027b U stephan -Z 2dc660cb87f9b9223b60fbf12ba2d753 +Z 2c8c2a7ce6b266c9bc7d1baf57207e7e # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 1e0d5dc9cb..e3f6dd88b5 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -b9773f164878b0a1b7c88cc7a6d1374ea95f64920065e8b2b178a1afffd82fe5 \ No newline at end of file +56668f9902c6e896b6c63621a444444c6f58ee20f88a5feae97f1699be35892d \ No newline at end of file