]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Enhancements to the printf() logic in order to render a negative zero with negative-zero
authordrh <drh@noemail.net>
Wed, 12 Jun 2019 20:11:34 +0000 (20:11 +0000)
committerdrh <drh@noemail.net>
Wed, 12 Jun 2019 20:11:34 +0000 (20:11 +0000)
a minus sign.

FossilOrigin-Name: 6ba4be66be90799ab0e1edc08c5c09bea239a85027ad0ca1f42818fc2580af4d

manifest
manifest.uuid
src/printf.c

index 77216e85fb98e49da611ce1fa93551bf03ec751a..5474e7d888b00f47789f6dffbe7a7f0482b44568 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Handle\sexpressions\slike\s"expr\sIS\sTRUE\sCOLLATE\sxyz"\sin\sthe\ssame\sway\sas\s"expr\sIS\sTRUE".\sFix\sfor\s[4d01eda8115b10d1].
-D 2019-06-12T13:49:32.380
+C Enhancements\sto\sthe\sprintf()\slogic\sin\sorder\sto\srender\sa\snegative\szero\swith\na\sminus\ssign.
+D 2019-06-12T20:11:34.026
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -518,7 +518,7 @@ F src/pcache1.c be64b2f3908a7f97c56c963676eb12f0d6254c95b28cdc1d73a186eff213219d
 F src/pragma.c 925bcac0afd98a0d4255c7524b93239ab4d83893d96f7f8fdccd78d4929a39bb
 F src/pragma.h 4a9fabff14db4487a734dfeeb4be984ce662bfdccfae16145b9c732327735e13
 F src/prepare.c 78027c6231fbb19ca186a5f5f0c0a1375d9c2cec0655273f9bd90d9ff74a34b3
-F src/printf.c 9be6945837c839ba57837b4bc3af349eba630920fa5532aa518816defe42a7d4
+F src/printf.c 05d4d769e0dba0bdb4f52255ab3c7ca0b500c5f08d28caced0cce0642ba60e87
 F src/random.c 80f5d666f23feb3e6665a6ce04c7197212a88384
 F src/resolve.c f71303e7202743e261b2fb885591b29d4bd826a7dc915745fa376fd1a3943f1a
 F src/rowset.c d977b011993aaea002cab3e0bb2ce50cf346000dff94e944d547b989f4b1fe93
@@ -1830,7 +1830,10 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 614ecb0af47038848e8ba2aed6b92db6f33ddc4aea6361795dbde440380f5a35
-R ff535e67a0f998f18172bd430f50d3e5
-U dan
-Z 1b38c763ebe911ce5080403db6734d6a
+P 5c6146b56a75a94f4baa10e95407c54dd0b9314a57a8702a4b96b15c4d7ac48c
+R 32970911aa181195f7f2f26ab5229a78
+T *branch * negative-zero
+T *sym-negative-zero *
+T -sym-trunk *
+U drh
+Z c775e1b0e8bc7632b27bc5f73f887bcc
index 0c3952791585362633b83080bbf3d4e15d080330..21d4a08f872e50815aeb65d03e337f182bdd676f 100644 (file)
@@ -1 +1 @@
-5c6146b56a75a94f4baa10e95407c54dd0b9314a57a8702a4b96b15c4d7ac48c
\ No newline at end of file
+6ba4be66be90799ab0e1edc08c5c09bea239a85027ad0ca1f42818fc2580af4d
\ No newline at end of file
index fc77f68dffa2241e526c063ebbef15170c0b87db..193339d49a328e3efcaff31f2501d45ea1767c06 100644 (file)
@@ -105,6 +105,13 @@ static const double arRound[] = {
   5.0e-06, 5.0e-07, 5.0e-08, 5.0e-09, 5.0e-10,
 };
 
+/* Return TRUE if a floating point number is negative, even a negative 0 */
+static int realIsNeg(double r){
+  i64 x;
+  memcpy(&x,&r,sizeof(x));
+  return x<0;
+}
+
 /*
 ** If SQLITE_OMIT_FLOATING_POINT is defined, then none of the floating point
 ** conversions will work.
@@ -515,7 +522,7 @@ void sqlite3_str_vappendf(
         length = 0;
 #else
         if( precision<0 ) precision = 6;         /* Set default precision */
-        if( realvalue<0.0 ){
+        if( realIsNeg(realvalue) ){
           realvalue = -realvalue;
           prefix = '-';
         }else{