diff options
author | drh <> | 2023-09-15 10:24:29 +0000 |
---|---|---|
committer | drh <> | 2023-09-15 10:24:29 +0000 |
commit | 581b22936297aa4cc19f2ee1920804ce96d5459d (patch) | |
tree | e0e4303cac12aff1c6b3befc43857822fab78f6f /src | |
parent | c9823e396072fcf63043129c9e59d787dd9f3274 (diff) | |
parent | e744f660086f0a3e44715efae64c143b8b91411c (diff) | |
download | sqlite-581b22936297aa4cc19f2ee1920804ce96d5459d.tar.gz sqlite-581b22936297aa4cc19f2ee1920804ce96d5459d.zip |
Do not try to convert a double into an unsigned 64-bit integer, as that does
not work on all platforms. A double can only be converted into a signed
64-bit integer.
FossilOrigin-Name: ce339046416e9ddeffe77f71a8bfb8c5b302160c3207f919aebd62902618ed59
Diffstat (limited to 'src')
-rw-r--r-- | src/util.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/util.c b/src/util.c index 7f8a33f9c..58591590d 100644 --- a/src/util.c +++ b/src/util.c @@ -1029,29 +1029,29 @@ void sqlite3FpDecode(FpDecode *p, double r, int iRound, int mxRound){ double rr[2]; rr[0] = r; rr[1] = 0.0; - if( rr[0]>1.84e+19 ){ - while( rr[0]>1.84e+119 ){ + if( rr[0]>9.223372036854774784e+18 ){ + while( rr[0]>9.223372036854774784e+118 ){ exp += 100; dekkerMul2(rr, 1.0e-100, -1.99918998026028836196e-117); } - while( rr[0]>1.84e+29 ){ + while( rr[0]>9.223372036854774784e+28 ){ exp += 10; dekkerMul2(rr, 1.0e-10, -3.6432197315497741579e-27); } - while( rr[0]>1.84e+19 ){ + while( rr[0]>9.223372036854774784e+18 ){ exp += 1; dekkerMul2(rr, 1.0e-01, -5.5511151231257827021e-18); } }else{ - while( rr[0]<1.84e-82 ){ + while( rr[0]<9.223372036854774784e-83 ){ exp -= 100; dekkerMul2(rr, 1.0e+100, -1.5902891109759918046e+83); } - while( rr[0]<1.84e+08 ){ + while( rr[0]<9.223372036854774784e+07 ){ exp -= 10; dekkerMul2(rr, 1.0e+10, 0.0); } - while( rr[0]<1.84e+18 ){ + while( rr[0]<9.22337203685477478e+17 ){ exp -= 1; dekkerMul2(rr, 1.0e+01, 0.0); } |