aboutsummaryrefslogtreecommitdiff
path: root/src/func.c
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2013-08-20 02:07:50 +0000
committerdrh <drh@noemail.net>2013-08-20 02:07:50 +0000
commitdb1c12b79fee0335ee72f81e3da972b8f5fc942a (patch)
tree7024c3e5091ea5d9527fdc04b976da28c46457bb /src/func.c
parent36df58e45ff90c997e6901c8bf18ddd83882d66c (diff)
downloadsqlite-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.c16
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;
}