From: drh Date: Wed, 24 Jun 2020 13:14:00 +0000 (+0000) Subject: In the one-argument version of the ieee754() extension function, if the X-Git-Tag: version-3.33.0~101 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b5b9bf85405f5814d6664dcdb0c78ff962dae39a;p=thirdparty%2Fsqlite.git In the one-argument version of the ieee754() extension function, if the argument is an 8-byte blob, interpret that blob as a binary64 floating point and decode it. FossilOrigin-Name: 4199c1e8aa47d77df3ef598cb6f5418f67970dd00f34823463c85eabfc8d2b77 --- diff --git a/ext/misc/ieee754.c b/ext/misc/ieee754.c index a67c91878c..40ee69c454 100644 --- a/ext/misc/ieee754.c +++ b/ext/misc/ieee754.c @@ -51,8 +51,19 @@ static void ieee754func( int isNeg; char zResult[100]; assert( sizeof(m)==sizeof(r) ); - if( sqlite3_value_type(argv[0])!=SQLITE_FLOAT ) return; - r = sqlite3_value_double(argv[0]); + if( sqlite3_value_type(argv[0])==SQLITE_BLOB + && sqlite3_value_bytes(argv[0])==sizeof(r) + ){ + const unsigned char *x = sqlite3_value_blob(argv[0]); + int i; + sqlite3_uint64 v = 0; + for(i=0; i