]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix compiler warnings and boundary cases for the tointeger() and toreal()
authordrh <drh@noemail.net>
Tue, 20 Aug 2013 02:07:50 +0000 (02:07 +0000)
committerdrh <drh@noemail.net>
Tue, 20 Aug 2013 02:07:50 +0000 (02:07 +0000)
functions.

FossilOrigin-Name: 4438b9865826446721b7aa09295fe335bf2fafb7

manifest
manifest.uuid
src/func.c

index eb143f76a4967223204f9e9d26f2f5ff0aa443e4..4d99f3c10c80c40cbf76bef46a59b031635e826e 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Performance\soptimizations\sin\sthe\sVDBE\sand\sespecially\sto\sthe\sOP_Next\sand\nrelated\sopcodes.
-D 2013-08-20T00:42:11.120
+C Fix\scompiler\swarnings\sand\sboundary\scases\sfor\sthe\stointeger()\sand\storeal()\nfunctions.
+D 2013-08-20T02:07:50.845
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in 5e41da95d92656a5004b03d3576e8b226858a28e
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -175,7 +175,7 @@ F src/delete.c 2317c814866d9aa71fea16b3faf4fdd4d6a49b94
 F src/expr.c 42d8235af422661ab80be097bebca485b33e2e14
 F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb
 F src/fkey.c 914a6bbd987d857c41ac9d244efa6641f36faadb
-F src/func.c 835168be942c8c18a6c6b3b78462bc378d25c7b4
+F src/func.c 03a79c7a2ae5535c36157d7f5823883c5d0179b1
 F src/global.c 5caf4deab621abb45b4c607aad1bd21c20aac759
 F src/hash.c ac3470bbf1ca4ae4e306a8ecb0fdf1731810ffe4
 F src/hash.h 8890a25af81fb85a9ad7790d32eedab4b994da22
@@ -1106,7 +1106,7 @@ F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381
 F tool/wherecosttest.c f407dc4c79786982a475261866a161cd007947ae
 F tool/win/sqlite.vsix 97894c2790eda7b5bce3cc79cb2a8ec2fde9b3ac
-P d2efea1682a7e708000c1f5d36370aaf1199b3be
-R 08cd0ad5f78761d7e8cb97606228a179
+P d78c5d89de4b840351b026c9db1952fc24e689d0
+R f40049688c2f823d8e8fd7e09d988578
 U drh
-Z 1caed0652391fde507351b876419455b
+Z 180da4560f629509c84cc64c4a342242
index fd7914b709a47b209a2fbffb97e57de78a091ea5..b43e0cae130a30d4931ec98c9c5c70bba6c64c85 100644 (file)
@@ -1 +1 @@
-d78c5d89de4b840351b026c9db1952fc24e689d0
\ No newline at end of file
+4438b9865826446721b7aa09295fe335bf2fafb7
\ No newline at end of file
index 995f1042601c98279dd7574ce091d97d9ad145d0..81f75851f7dc2946bf46d6ee905b8f534da94af8 100644 (file)
@@ -981,7 +981,7 @@ static void tointegerFunc(
     case SQLITE_FLOAT: {
       double rVal = sqlite3_value_double(argv[0]);
       i64 iVal = (i64)rVal;
-      if( !sqlite3IsNaN(rVal) && rVal==(double)iVal ){
+      if( rVal==(double)iVal ){
         sqlite3_result_int64(context, iVal);
       }
       break;
@@ -995,9 +995,9 @@ static void tointegerFunc(
       const unsigned char *zStr = sqlite3_value_text(argv[0]);
       if( zStr ){
         int nStr = sqlite3_value_bytes(argv[0]);
-        if( nStr ){
+        if( nStr && !sqlite3Isspace(zStr[0]) ){
           i64 iVal;
-          if( !sqlite3Atoi64(zStr, &iVal, nStr, SQLITE_UTF8) ){
+          if( !sqlite3Atoi64((const char*)zStr, &iVal, nStr, SQLITE_UTF8) ){
             sqlite3_result_int64(context, iVal);
           }
         }
@@ -1028,11 +1028,7 @@ static void torealFunc(
       break;
     }
     case SQLITE_INTEGER: {
-      i64 iVal = sqlite3_value_int64(argv[0]);
-      double rVal = (double)iVal;
-      if( iVal==rVal ){
-        sqlite3_result_double(context, rVal);
-      }
+      sqlite3_result_double(context, (double)sqlite3_value_int64(argv[0]));
       break;
     }
     case SQLITE_BLOB:
@@ -1040,9 +1036,9 @@ static void torealFunc(
       const unsigned char *zStr = sqlite3_value_text(argv[0]);
       if( zStr ){
         int nStr = sqlite3_value_bytes(argv[0]);
-        if( nStr ){
+        if( nStr && !sqlite3Isspace(zStr[0]) && !sqlite3Isspace(zStr[nStr-1]) ){
           double rVal;
-          if( sqlite3AtoF(zStr, &rVal, nStr, SQLITE_UTF8) ){
+          if( sqlite3AtoF((const char*)zStr, &rVal, nStr, SQLITE_UTF8) ){
             sqlite3_result_double(context, rVal);
             return;
           }