From: drh <> Date: Tue, 2 May 2023 16:34:15 +0000 (+0000) Subject: Interpret negative arguments to sqlite3_sleep() as zero. X-Git-Tag: version-3.42.0~64 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d6b3a02d21cd2e3e22674ad2bf7d4152b842a0a6;p=thirdparty%2Fsqlite.git Interpret negative arguments to sqlite3_sleep() as zero. FossilOrigin-Name: 2b542326aa8e7e1f6ed9d999b95ae5340278e0821277a17de3cc803b4af793ae --- diff --git a/manifest b/manifest index 43474ee29c..4e71077e8a 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Improved\shandling\sof\sNULL\sarguments\sto\sjson_valid()\sand\njson_error_position().\s[forum:/forumpost/06c6334412|Forum\spost\s06c6334412]. -D 2023-05-02T11:12:01.595 +C Interpret\snegative\sarguments\sto\ssqlite3_sleep()\sas\szero. +D 2023-05-02T16:34:15.974 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -598,7 +598,7 @@ F src/insert.c a8de1db43335fc4946370a7a7e47d89975ad678ddb15078a150e993ba2fb37d4 F src/json.c acb60ec1585a98b25b18d064384f31959405e5591246480db557e264133f5939 F src/legacy.c d7874bc885906868cd51e6c2156698f2754f02d9eee1bae2d687323c3ca8e5aa F src/loadext.c be5af440f3192c58681b5d43167dbca3ccbfce394d89faa22378a14264781136 -F src/main.c 09bc5191f75dc48fc4dfddda143cb864c0c3dbc3297eb9a9c8e01fea58ff847d +F src/main.c 035be2e9ba2a0fc1701a8ab1880af3001a968a24556433538a6c073558ee4341 F src/malloc.c 47b82c5daad557d9b963e3873e99c22570fb470719082c6658bf64e3012f7d23 F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645 F src/mem1.c c12a42539b1ba105e3707d0e628ad70e611040d8f5e38cf942cee30c867083de @@ -637,7 +637,7 @@ F src/resolve.c 3e53e02ce87c9582bd7e7d22f13f4094a271678d9dc72820fa257a2abb5e4032 F src/rowset.c ba9515a922af32abe1f7d39406b9d35730ed65efab9443dc5702693b60854c92 F src/select.c f879cef11c462a2c37a8c906932781e384c3bb32042c355a704a043029c90d27 F src/shell.c.in ae33222a1776ce24a1e0fe565639126e9fd6efd276af8df562d9296db53cd3d7 -F src/sqlite.h.in 6066996620c2a97193518148ab2d3cedf37d8ee7667dafa96c207a86152b2cfb +F src/sqlite.h.in d6b0b83b2deab8f92ef7cc6f6fb94fa59d21c59f7b55f4c693bfff161ce42238 F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8 F src/sqlite3ext.h da473ce2b3d0ae407a6300c4a164589b9a6bfdbec9462688a8593ff16f3bb6e4 F src/sqliteInt.h ef0268eeba1449170d5967493a3f6b720344cd6f461c3430299c00d51da74d9d @@ -1325,7 +1325,7 @@ F test/minmax.test fe638b55d77d2375531a8f549b338eafcd9adfbd2f72df37ed77d9b26ca0a F test/minmax2.test cf9311babb6f0518d04e42fd6a42c619531c4309a9dd790a2c4e9b3bc595e0de F test/minmax3.test cc1e8b010136db0d01a6f2a29ba5a9f321034354 F test/minmax4.test 272ca395257f05937dc96441c9dde4bc9fbf116a8d4fa02baeb0d13d50e36c87 -F test/misc1.test 9955e70cab5e284d77e358cfa1f1dd43f5e4bc00a421018581b0fbd62206a6a1 +F test/misc1.test 8d138a4926ab90617c1aa29ce26e7785ae2b83a4d3a195d543b7374e05589dd1 F test/misc2.test 71e746af479119386ac2ed7ab7d81d99970e75b49ffd3e8efffee100b4b5f350 F test/misc3.test cf3dda47d5dda3e53fc5804a100d3c82be736c9d F test/misc4.test 10cd6addb2fa9093df4751a1b92b50440175dd5468a6ec84d0386e78f087db0e @@ -2068,8 +2068,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 41a8a15c4b6f6157b12d43976e300763ef8a4963986d2806557ad0d8b0a784cd -R ac8e37433aff844778b8019ba20de84e +P ab78e6946ba8125a83ff155561adf9c8df4d1c09a645fce08c8245ddb08bfa3b +R 5118eb93bc588887d626767e578c1656 U drh -Z fdf5f91c1580ba93eac92cce90bc0c2d +Z bf1145d4ad4b3fe66c806783f54fa71a # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index ce36252b48..11d39eef5c 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -ab78e6946ba8125a83ff155561adf9c8df4d1c09a645fce08c8245ddb08bfa3b \ No newline at end of file +2b542326aa8e7e1f6ed9d999b95ae5340278e0821277a17de3cc803b4af793ae \ No newline at end of file diff --git a/src/main.c b/src/main.c index 3f03a5c1ea..d7f366b5eb 100644 --- a/src/main.c +++ b/src/main.c @@ -3933,7 +3933,7 @@ int sqlite3_sleep(int ms){ /* This function works in milliseconds, but the underlying OsSleep() ** API uses microseconds. Hence the 1000's. */ - rc = (sqlite3OsSleep(pVfs, 1000*ms)/1000); + rc = (sqlite3OsSleep(pVfs, ms<0 ? 0 : 1000*ms)/1000); return rc; } diff --git a/src/sqlite.h.in b/src/sqlite.h.in index e31c899b63..a9972adbba 100644 --- a/src/sqlite.h.in +++ b/src/sqlite.h.in @@ -6255,6 +6255,13 @@ void sqlite3_activate_cerod( ** of the default VFS is not implemented correctly, or not implemented at ** all, then the behavior of sqlite3_sleep() may deviate from the description ** in the previous paragraphs. +** +** If a negative argument is passed to sqlite3_sleep() the results vary by +** VFS and operating system. Some system treat a negative argument as an +** instruction to sleep forever. Others understand it to mean do not sleep +** at all. ^In SQLite version 3.42.0 and later, a negative +** argument passed into sqlite3_sleep() is changed to zero before it is relayed +** down into the xSleep method of the VFS. */ int sqlite3_sleep(int); diff --git a/test/misc1.test b/test/misc1.test index 44914156cb..83acc752af 100644 --- a/test/misc1.test +++ b/test/misc1.test @@ -592,6 +592,9 @@ do_test misc1-18.1 { set n [sqlite3_sleep 100] expr {$n>=100} } {1} +do_test misc1-18.2 { + sqlite3_sleep -100 +} {0} # 2014-01-10: In a CREATE TABLE AS, if one or more of the column names # are an empty string, that is still OK.