diff options
author | drh <> | 2024-02-19 18:55:32 +0000 |
---|---|---|
committer | drh <> | 2024-02-19 18:55:32 +0000 |
commit | f40da9226d3693574e4f600e6fa2e933c97ea5f1 (patch) | |
tree | 523057e3a03d1ac554df93a5458b4bf08a04e8b1 /src | |
parent | e7bdb2172c717f7ba64e15fb65b930524e759d71 (diff) | |
parent | e0a9935be1c506646566f6b7845eb381bb219e16 (diff) | |
download | sqlite-f40da9226d3693574e4f600e6fa2e933c97ea5f1.tar.gz sqlite-f40da9226d3693574e4f600e6fa2e933c97ea5f1.zip |
Merge trunk fixes into the better-optimize branch.
FossilOrigin-Name: 2cf78a5b5fce7f2d49ce185d27f50722c91a1d6c91bbcecebd4bb5244a76769f
Diffstat (limited to 'src')
-rw-r--r-- | src/os_unix.c | 6 | ||||
-rw-r--r-- | src/printf.c | 1 | ||||
-rw-r--r-- | src/util.c | 2 |
3 files changed, 7 insertions, 2 deletions
diff --git a/src/os_unix.c b/src/os_unix.c index 4b3d63c2c..4663c22d9 100644 --- a/src/os_unix.c +++ b/src/os_unix.c @@ -1295,8 +1295,12 @@ static int unixLogErrorAtLine( ** available, the error message will often be an empty string. Not a ** huge problem. Incorrectly concluding that the GNU version is available ** could lead to a segfault though. + ** + ** Forum post 3f13857fa4062301 reports that the Android SDK may use + ** int-type return, depending on its version. */ -#if defined(STRERROR_R_CHAR_P) || defined(__USE_GNU) +#if (defined(STRERROR_R_CHAR_P) || defined(__USE_GNU)) \ + && !defined(ANDROID) && !defined(__ANDROID__) zErr = # endif strerror_r(iErrno, aErr, sizeof(aErr)-1); diff --git a/src/printf.c b/src/printf.c index c6b3803ca..2e09431bf 100644 --- a/src/printf.c +++ b/src/printf.c @@ -498,6 +498,7 @@ void sqlite3_str_vappendf( if( xtype==etFLOAT ){ iRound = -precision; }else if( xtype==etGENERIC ){ + if( precision==0 ) precision = 1; iRound = precision; }else{ iRound = precision+1; diff --git a/src/util.c b/src/util.c index 207b901ba..4aa82d063 100644 --- a/src/util.c +++ b/src/util.c @@ -1069,7 +1069,7 @@ void sqlite3FpDecode(FpDecode *p, double r, int iRound, int mxRound){ assert( p->n>0 ); assert( p->n<sizeof(p->zBuf) ); p->iDP = p->n + exp; - if( iRound<0 ){ + if( iRound<=0 ){ iRound = p->iDP - iRound; if( iRound==0 && p->zBuf[i+1]>='5' ){ iRound = 1; |