From ed7e3bc70a89a0838a5b7e44928cbd65aec50bb1 Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Thu, 26 Jul 2018 13:15:19 +0200 Subject: Fix #76665: SQLite3Stmt::bindValue() with SQLITE3_FLOAT doesn't juggle We need to ensure that a zval IS_DOUBLE before we access it as such. In this case we apply common type juggling to do so. --- NEWS | 4 ++++ ext/sqlite3/sqlite3.c | 2 +- ext/sqlite3/tests/bug76665.phpt | 19 +++++++++++++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 ext/sqlite3/tests/bug76665.phpt diff --git a/NEWS b/NEWS index f3bc056b38..87402d9dec 100644 --- a/NEWS +++ b/NEWS @@ -13,6 +13,10 @@ PHP NEWS - PDO_Firebird: . Fixed bug #76488 (Memory leak when fetching a BLOB field). (Simonov Denis) +- SQLite3: + . Fixed #76665 (SQLite3Stmt::bindValue() with SQLITE3_FLOAT doesn't juggle). + (cmb) + - Standard: . Fixed bug #68553 (array_column: null values in $index_key become incrementing keys in result). (Laruence) diff --git a/ext/sqlite3/sqlite3.c b/ext/sqlite3/sqlite3.c index 40406eeafc..6894089e41 100644 --- a/ext/sqlite3/sqlite3.c +++ b/ext/sqlite3/sqlite3.c @@ -1562,7 +1562,7 @@ PHP_METHOD(sqlite3stmt, execute) break; case SQLITE_FLOAT: - /* convert_to_double(parameter);*/ + convert_to_double(parameter); sqlite3_bind_double(stmt_obj->stmt, param->param_number, Z_DVAL_P(parameter)); break; diff --git a/ext/sqlite3/tests/bug76665.phpt b/ext/sqlite3/tests/bug76665.phpt new file mode 100644 index 0000000000..0e1de136f7 --- /dev/null +++ b/ext/sqlite3/tests/bug76665.phpt @@ -0,0 +1,19 @@ +--TEST-- +Bug #76665 (SQLite3Stmt::bindValue() with SQLITE3_FLOAT doesn't juggle) +--SKIPIF-- + +--FILE-- +exec("CREATE TABLE foo (bar REAL)"); +$stmt = $db->prepare("INSERT INTO foo VALUES (:bar)"); +$stmt->bindValue(':bar', 17, SQLITE3_FLOAT); +$stmt->execute(); +var_dump($db->querySingle("SELECT bar FROM foo LIMIT 1")); +?> +===DONE=== +--EXPECT-- +float(17) +===DONE=== -- cgit v1.2.1