diff options
author | drh <drh@noemail.net> | 2013-08-20 02:07:50 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2013-08-20 02:07:50 +0000 |
commit | db1c12b79fee0335ee72f81e3da972b8f5fc942a (patch) | |
tree | 7024c3e5091ea5d9527fdc04b976da28c46457bb /src/func.c | |
parent | 36df58e45ff90c997e6901c8bf18ddd83882d66c (diff) | |
download | sqlite-db1c12b79fee0335ee72f81e3da972b8f5fc942a.tar.gz sqlite-db1c12b79fee0335ee72f81e3da972b8f5fc942a.zip |
Fix compiler warnings and boundary cases for the tointeger() and toreal()
functions.
FossilOrigin-Name: 4438b9865826446721b7aa09295fe335bf2fafb7
Diffstat (limited to 'src/func.c')
-rw-r--r-- | src/func.c | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/src/func.c b/src/func.c index 995f10426..81f75851f 100644 --- a/src/func.c +++ b/src/func.c @@ -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; } |