]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Change the implementation of the NaN recognition to be more cross-platform.
authordrh <drh@noemail.net>
Mon, 28 Apr 2008 16:55:26 +0000 (16:55 +0000)
committerdrh <drh@noemail.net>
Mon, 28 Apr 2008 16:55:26 +0000 (16:55 +0000)
Ticket #3089. (CVS 5060)

FossilOrigin-Name: 07fd9a8c6ca0876f7ec447ce65173957005dc75c

manifest
manifest.uuid
src/printf.c
src/sqliteInt.h
src/util.c
src/vdbe.c
src/vdbemem.c

index 09462d54c3b8c1474abfba77bf6332f2acf8aa78..b88de430cbe62fe9f7b3b1b873d6a0a3ef5a3eb0 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\sa\sshared-cache\smode\sproblem\striggered\swhen\ssqlite3_open16()\swas\sused\sto\sopen\sthe\ssecond\sor\ssubsequent\sconnections\sto\sa\sutf-8\sdatabase.\s(CVS\s5059)
-D 2008-04-28T16:19:35
+C Change\sthe\simplementation\sof\sthe\sNaN\srecognition\sto\sbe\smore\scross-platform.\nTicket\s#3089.\s(CVS\s5060)
+D 2008-04-28T16:55:26
 F Makefile.arm-wince-mingw32ce-gcc ac5f7b2cef0cd850d6f755ba6ee4ab961b1fadf7
 F Makefile.in 25b3282a4ac39388632c2fb0e044ff494d490952
 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@@ -127,14 +127,14 @@ F src/pager.h 45ec2188593afd48a25c743529646771d75e83e4
 F src/parse.y fc4bd35c6088901f7c8daead26c6fb11c87d22e7
 F src/pragma.c 2e4bb2e76e48a32750529fdc4bfe86ac5f54e01b
 F src/prepare.c adc7e1fc08dfbab63cd213d4c0aff8f3fa70d477
-F src/printf.c 05d2b44d7b5b80c8a4a09108ddad9c20e254370d
+F src/printf.c 2d9bac813d1319babf3c6e925cf7ec5be1281c94
 F src/random.c 2b2db2de4ab491f5a14d3480466f8f4b5a5db74a
 F src/select.c b02ee16591f0194739e7deb12099d3e98e60b7f3
 F src/server.c 087b92a39d883e3fa113cae259d64e4c7438bc96
 F src/shell.c be22ec05c8c4a43a95a6ad3b8068542200451e07
 F src/sqlite.h.in abb785d2afcf45bb9344fe6edc1c7b428e1b719f
 F src/sqlite3ext.h faacd0e6a81aabee0861c6d7883c9172e74ef5b3
-F src/sqliteInt.h d038951808706ae039b05090e068674d307f3e3f
+F src/sqliteInt.h 1884454ab9c29b331c31a659c56d73ff2af2e077
 F src/sqliteLimit.h f435e728c6b620ef7312814d660a81f9356eb5c8
 F src/table.c 46ccf9b7892a86f57420ae7bac69ecd5e72d26b5
 F src/tclsqlite.c 2877726bf32f7d72ff057b37ed6c93485b667ea1
@@ -167,16 +167,16 @@ F src/tokenize.c a96abe15a8db6fea2e964cdce2acba9ed17bc26f
 F src/trigger.c 9bd3b6fa0beff4a02d262c96466f752ec15a7fc3
 F src/update.c 57282dae1ffffaf4aedc3201ed77f8ef09be4f45
 F src/utf.c 8c94fa10efc78c2568d08d436acc59df4df7191b
-F src/util.c 943caa4071488b20ed90588f0704c6825f91836b
+F src/util.c 6b030399aa362338316ba5726cb625318ea74bed
 F src/vacuum.c 3524411bfb58aac0d87eadd3e5b7cd532772af30
-F src/vdbe.c 2d75ac15ec69721340f0320e5b2fefbbd1aa2831
+F src/vdbe.c 1e0ee231e5b035195c6d0043f059fe7f3df563da
 F src/vdbe.h bfd84bda447f39cb599302c7ec85067dae20453c
 F src/vdbeInt.h 05316345da487b0cf540482576f9ae3337d133cd
 F src/vdbeapi.c 0e1b5a808bb0e556f2a975eb7d11fd3153e922bf
 F src/vdbeaux.c 7a0d0f021ebc54ae581a4f1ba833a2bee576228e
 F src/vdbeblob.c 554736781ee273a8089c776e96bdb53e66f57ce6
 F src/vdbefifo.c a30c237b2a3577e1415fb6e288cbb6b8ed1e5736
-F src/vdbemem.c e2450d6c798f35a30413a79c5fa9b1a24058629d
+F src/vdbemem.c 8cdc5d4c9558338a2c5ae81135d0826136833b5e
 F src/vtab.c 13cd7f225c685a71aeba79c0ef521022913f185a
 F src/where.c 85719d58e0f680b5d8239dc6af82b159775d7376
 F tclinstaller.tcl 4356d9d94d2b5ed5e68f9f0c80c4df3048dd7617
@@ -630,7 +630,7 @@ F www/tclsqlite.tcl 8be95ee6dba05eabcd27a9d91331c803f2ce2130
 F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
 F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b
 F www/whentouse.tcl fc46eae081251c3c181bd79c5faef8195d7991a5
-P 7bf8213ce9f591f4c2ef6c1e19a17712e3bae9e3
-R 613b7949fdaa0711be115c0f2be92a3b
-U danielk1977
-Z 355fdcb5723cd5025089cad5f7c888ad
+P 20946bf6dd704416c41edd863103e85fc7ab4ef2
+R 80368d71b836d83e7f2e7f2f1d8e19df
+U drh
+Z 00d3002a00844183e10c99274d36883e
index 036e3600416df3e8838b2b0bda3911cf3ad037a1..c9448b3dc49c8968dca57f9fa8993ec67d793089 100644 (file)
@@ -1 +1 @@
-20946bf6dd704416c41edd863103e85fc7ab4ef2
\ No newline at end of file
+07fd9a8c6ca0876f7ec447ce65173957005dc75c
\ No newline at end of file
index 4e75257989cb13bc60768454b2c4bfc45db71478..eb90de4d925161b936325c12851eed31f8ebb48c 100644 (file)
@@ -474,7 +474,7 @@ static void vxprintf(
         if( xtype==etFLOAT ) realvalue += rounder;
         /* Normalize realvalue to within 10.0 > realvalue >= 1.0 */
         exp = 0;
-        if( sqlite3_isnan(realvalue) ){
+        if( sqlite3IsNaN(realvalue) ){
           bufpt = "NaN";
           length = 3;
           break;
index d52a04cf13ca883599128b9223371faae9287e29..fd7d7602ff320b184c7ed78c47a1a7f7da2d7f21 100644 (file)
@@ -11,7 +11,7 @@
 *************************************************************************
 ** Internal interface definitions for SQLite.
 **
-** @(#) $Id: sqliteInt.h,v 1.697 2008/04/28 12:54:15 drh Exp $
+** @(#) $Id: sqliteInt.h,v 1.698 2008/04/28 16:55:26 drh Exp $
 */
 #ifndef _SQLITEINT_H_
 #define _SQLITEINT_H_
 #include <assert.h>
 #include <stddef.h>
 
-#define sqlite3_isnan(X)  ((X)!=(X))
-
 /*
 ** If compiling for a processor that lacks floating point support,
 ** substitute integer for floating-point
@@ -1766,6 +1764,8 @@ void *sqlite3DbReallocOrFree(sqlite3 *, void *, int);
 void *sqlite3DbRealloc(sqlite3 *, void *, int);
 int sqlite3MallocSize(void *);
 
+int sqlite3IsNaN(double);
+
 char *sqlite3MPrintf(sqlite3*,const char*, ...);
 char *sqlite3VMPrintf(sqlite3*,const char*, va_list);
 #if defined(SQLITE_TEST) || defined(SQLITE_DEBUG)
index 28cfffa4a6704d46b36da88be0a9a7bd97b470f5..2a7d7a2b004b508d4b0c0fb7626237ed27f0f656 100644 (file)
 ** This file contains functions for allocating memory, comparing
 ** strings, and stuff like that.
 **
-** $Id: util.c,v 1.222 2008/04/16 00:49:12 drh Exp $
+** $Id: util.c,v 1.223 2008/04/28 16:55:26 drh Exp $
 */
 #include "sqliteInt.h"
 #include <stdarg.h>
 #include <ctype.h>
 
 
+/*
+** Return true if the floating point value is Not a Number.
+*/
+int sqlite3IsNaN(double x){
+  volatile double y = x;
+  return x!=y;
+}
+
 /*
 ** Set the most recent error code and error string for the sqlite
 ** handle "db". The error code is set to "err_code".
index 78183fcfaaebf836b999e9d2324022d6aa6f97c6..2f027e95cc50388df848317bfe64f2dba385540e 100644 (file)
@@ -43,7 +43,7 @@
 ** in this file for details.  If in doubt, do not deviate from existing
 ** commenting and indentation practices when changing or adding code.
 **
-** $Id: vdbe.c,v 1.735 2008/04/25 12:25:42 drh Exp $
+** $Id: vdbe.c,v 1.736 2008/04/28 16:55:26 drh Exp $
 */
 #include "sqliteInt.h"
 #include <ctype.h>
@@ -1195,7 +1195,7 @@ case OP_Remainder: {           /* same as TK_REM, in1, in2, out3 */
         break;
       }
     }
-    if( sqlite3_isnan(b) ){
+    if( sqlite3IsNaN(b) ){
       goto arithmetic_result_is_null;
     }
     pOut->r = b;
index f45f38426321f82db428dee0db463350ba42087b..9f831ecc9a443374b157401fd13a7bdb1a3dd49e 100644 (file)
@@ -482,7 +482,7 @@ void sqlite3VdbeMemSetInt64(Mem *pMem, i64 val){
 ** manifest type REAL.
 */
 void sqlite3VdbeMemSetDouble(Mem *pMem, double val){
-  if( sqlite3_isnan(val) ){
+  if( sqlite3IsNaN(val) ){
     sqlite3VdbeMemSetNull(pMem);
   }else{
     sqlite3VdbeMemRelease(pMem);