From: drh Date: Wed, 24 Jun 2020 13:52:10 +0000 (+0000) Subject: Fix the decoding of subnormal values in the ieee754 extension. X-Git-Tag: version-3.33.0~100 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ec18b6e5b9d8f6c35bed9294c3da5ac883e99713;p=thirdparty%2Fsqlite.git Fix the decoding of subnormal values in the ieee754 extension. FossilOrigin-Name: 838817b680f02b3845d6d56f85d5d36fa5ae7453afef7a1a5a24624255f2dc3e --- diff --git a/ext/misc/ieee754.c b/ext/misc/ieee754.c index 40ee69c454..403b08aba1 100644 --- a/ext/misc/ieee754.c +++ b/ext/misc/ieee754.c @@ -77,7 +77,11 @@ static void ieee754func( }else{ e = a>>52; m = a & ((((sqlite3_int64)1)<<52)-1); - m |= ((sqlite3_int64)1)<<52; + if( e==0 ){ + m <<= 1; + }else{ + m |= ((sqlite3_int64)1)<<52; + } while( e<1075 && m>0 && (m&1)==0 ){ m >>= 1; e++; diff --git a/manifest b/manifest index 96f842691f..ca3555092d 100644 --- a/manifest +++ b/manifest @@ -1,12 +1,12 @@ B 7a876209a678a34c198b54ceef9e3c041f128a14dc73357f6a57cadadaa6cf7b -C In\sthe\sone-argument\sversion\sof\sthe\sieee754()\sextension\sfunction,\sif\sthe\nargument\sis\san\s8-byte\sblob,\sinterpret\sthat\sblob\sas\sa\sbinary64\sfloating\spoint\nand\sdecode\sit. -D 2020-06-24T13:14:00.385 +C Fix\sthe\sdecoding\sof\ssubnormal\svalues\sin\sthe\sieee754\sextension. +D 2020-06-24T13:52:10.631 F Makefile.in 014ad669b4a5809752939c2dea83722992711b464aa56adebca80c5cc98cfdc2 F Makefile.msc 08c8bbedfa51e21b57153370edbfee86d35bbefb53e3773a3e086fe654facccb F autoconf/Makefile.am a8d1d24affe52ebf8d7ddcf91aa973fa0316618ab95bb68c87cabf8faf527dc8 F ext/lsm1/lsm_unix.c 11e0a5c19d754a4e1d93dfad06de8cc201f10f886b8e61a4c599ed34e334fc24 F ext/misc/decimal.c c1897f624893d1c12e3c879d97ca7d1c4a36cae10d32afe632779de78c4aaa4f -F ext/misc/ieee754.c 527917ceea0e5e822857004dd155bf4d76610360e46c875f0c8c619761528758 +F ext/misc/ieee754.c 94846ee4b2e7a77faf9980b36b9862b67735991448665a1ef9888254697e60db F main.mk c99e452dd4edd0bea28547259421bd6cf24d41d928d24720737efc548958ca39 F src/build.c ba1bbe563a3dc02d5fed20537603181e5289c13ea30ae5e775f552e7557adbfa F src/shell.c.in a46df1496dea229614a14ca1c517f9e4bfecf6e3867cc6a4a129b311f3ad8c9c @@ -16,7 +16,7 @@ F test/speedtest1.c ea201573f9b27542ea1e74a68e74f121e0eb04c89e67039f40ed68f1b833 F tool/mkautoconfamal.sh f62353eb6c06ab264da027fd4507d09914433dbdcab9cb011cdc18016f1ab3b8 F tool/mksqlite3c.tcl f4ef476510eca4124c874a72029f1e01bc54a896b1724e8f9eef0d8bfae0e84c F tool/mksqlite3h.tcl 1f5e4a1dbbbc43c83cc6e74fe32c6c620502240b66c7c0f33a51378e78fc4edf -P 5391687bf8563b3fdd157b436b2cbb6a0ee5f676727d41bbddfaa8eacc39729b -R 9df1873b31c9843b7d8070e95e535ae7 +P 4199c1e8aa47d77df3ef598cb6f5418f67970dd00f34823463c85eabfc8d2b77 +R ba2656328834bfd4a44f83b197706ae6 U drh -Z e294649fafe56ea83e41b8415698390e +Z 3f979f9393c7d6c04f34a16bcf1ccd28 diff --git a/manifest.uuid b/manifest.uuid index f249cc4086..aceb83dacb 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -4199c1e8aa47d77df3ef598cb6f5418f67970dd00f34823463c85eabfc8d2b77 \ No newline at end of file +838817b680f02b3845d6d56f85d5d36fa5ae7453afef7a1a5a24624255f2dc3e \ No newline at end of file