1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-10-22 22:13:04 +03:00

Fix compiler warnings and boundary cases for the tointeger() and toreal()

functions.

FossilOrigin-Name: 4438b9865826446721b7aa09295fe335bf2fafb7
This commit is contained in:
drh
2013-08-20 02:07:50 +00:00
parent 36df58e45f
commit db1c12b79f
3 changed files with 13 additions and 17 deletions

View File

@@ -1,5 +1,5 @@
C Performance\soptimizations\sin\sthe\sVDBE\sand\sespecially\sto\sthe\sOP_Next\sand\nrelated\sopcodes. C Fix\scompiler\swarnings\sand\sboundary\scases\sfor\sthe\stointeger()\sand\storeal()\nfunctions.
D 2013-08-20T00:42:11.120 D 2013-08-20T02:07:50.845
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
F Makefile.in 5e41da95d92656a5004b03d3576e8b226858a28e F Makefile.in 5e41da95d92656a5004b03d3576e8b226858a28e
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -175,7 +175,7 @@ F src/delete.c 2317c814866d9aa71fea16b3faf4fdd4d6a49b94
F src/expr.c 42d8235af422661ab80be097bebca485b33e2e14 F src/expr.c 42d8235af422661ab80be097bebca485b33e2e14
F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb
F src/fkey.c 914a6bbd987d857c41ac9d244efa6641f36faadb F src/fkey.c 914a6bbd987d857c41ac9d244efa6641f36faadb
F src/func.c 835168be942c8c18a6c6b3b78462bc378d25c7b4 F src/func.c 03a79c7a2ae5535c36157d7f5823883c5d0179b1
F src/global.c 5caf4deab621abb45b4c607aad1bd21c20aac759 F src/global.c 5caf4deab621abb45b4c607aad1bd21c20aac759
F src/hash.c ac3470bbf1ca4ae4e306a8ecb0fdf1731810ffe4 F src/hash.c ac3470bbf1ca4ae4e306a8ecb0fdf1731810ffe4
F src/hash.h 8890a25af81fb85a9ad7790d32eedab4b994da22 F src/hash.h 8890a25af81fb85a9ad7790d32eedab4b994da22
@@ -1106,7 +1106,7 @@ F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381 F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381
F tool/wherecosttest.c f407dc4c79786982a475261866a161cd007947ae F tool/wherecosttest.c f407dc4c79786982a475261866a161cd007947ae
F tool/win/sqlite.vsix 97894c2790eda7b5bce3cc79cb2a8ec2fde9b3ac F tool/win/sqlite.vsix 97894c2790eda7b5bce3cc79cb2a8ec2fde9b3ac
P d2efea1682a7e708000c1f5d36370aaf1199b3be P d78c5d89de4b840351b026c9db1952fc24e689d0
R 08cd0ad5f78761d7e8cb97606228a179 R f40049688c2f823d8e8fd7e09d988578
U drh U drh
Z 1caed0652391fde507351b876419455b Z 180da4560f629509c84cc64c4a342242

View File

@@ -1 +1 @@
d78c5d89de4b840351b026c9db1952fc24e689d0 4438b9865826446721b7aa09295fe335bf2fafb7

View File

@@ -981,7 +981,7 @@ static void tointegerFunc(
case SQLITE_FLOAT: { case SQLITE_FLOAT: {
double rVal = sqlite3_value_double(argv[0]); double rVal = sqlite3_value_double(argv[0]);
i64 iVal = (i64)rVal; i64 iVal = (i64)rVal;
if( !sqlite3IsNaN(rVal) && rVal==(double)iVal ){ if( rVal==(double)iVal ){
sqlite3_result_int64(context, iVal); sqlite3_result_int64(context, iVal);
} }
break; break;
@@ -995,9 +995,9 @@ static void tointegerFunc(
const unsigned char *zStr = sqlite3_value_text(argv[0]); const unsigned char *zStr = sqlite3_value_text(argv[0]);
if( zStr ){ if( zStr ){
int nStr = sqlite3_value_bytes(argv[0]); int nStr = sqlite3_value_bytes(argv[0]);
if( nStr ){ if( nStr && !sqlite3Isspace(zStr[0]) ){
i64 iVal; i64 iVal;
if( !sqlite3Atoi64(zStr, &iVal, nStr, SQLITE_UTF8) ){ if( !sqlite3Atoi64((const char*)zStr, &iVal, nStr, SQLITE_UTF8) ){
sqlite3_result_int64(context, iVal); sqlite3_result_int64(context, iVal);
} }
} }
@@ -1028,11 +1028,7 @@ static void torealFunc(
break; break;
} }
case SQLITE_INTEGER: { case SQLITE_INTEGER: {
i64 iVal = sqlite3_value_int64(argv[0]); sqlite3_result_double(context, (double)sqlite3_value_int64(argv[0]));
double rVal = (double)iVal;
if( iVal==rVal ){
sqlite3_result_double(context, rVal);
}
break; break;
} }
case SQLITE_BLOB: case SQLITE_BLOB:
@@ -1040,9 +1036,9 @@ static void torealFunc(
const unsigned char *zStr = sqlite3_value_text(argv[0]); const unsigned char *zStr = sqlite3_value_text(argv[0]);
if( zStr ){ if( zStr ){
int nStr = sqlite3_value_bytes(argv[0]); int nStr = sqlite3_value_bytes(argv[0]);
if( nStr ){ if( nStr && !sqlite3Isspace(zStr[0]) && !sqlite3Isspace(zStr[nStr-1]) ){
double rVal; double rVal;
if( sqlite3AtoF(zStr, &rVal, nStr, SQLITE_UTF8) ){ if( sqlite3AtoF((const char*)zStr, &rVal, nStr, SQLITE_UTF8) ){
sqlite3_result_double(context, rVal); sqlite3_result_double(context, rVal);
return; return;
} }