mirror of
https://github.com/php/php-src.git
synced 2025-01-20 10:43:40 +08:00
Closes PECL Bug #5772; FETCH_FUNC broken for mixed case function names
This commit is contained in:
parent
7af8089096
commit
0139cd0e53
@ -682,7 +682,8 @@ static int make_callable_ex(pdo_stmt_t *stmt, zval *callable, zend_fcall_info *
|
||||
ce = *pce;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
zend_str_tolower_copy(fname, fname, strlen(fname));
|
||||
fci->function_table = ce ? &ce->function_table : EG(function_table);
|
||||
if (zend_hash_find(fci->function_table, fname, strlen(fname)+1, (void **)&function_handler) == FAILURE) {
|
||||
pdo_raise_impl_error(stmt->dbh, stmt, "HY000", "user-supplied function does not exist" TSRMLS_CC);
|
||||
|
29
ext/pdo/tests/pecl_bug_5772.phpt
Normal file
29
ext/pdo/tests/pecl_bug_5772.phpt
Normal file
@ -0,0 +1,29 @@
|
||||
--TEST--
|
||||
PDO Common: PECL Bug #5772 PDO::FETCH_FUNC breaks on mixed case func name
|
||||
--SKIPIF--
|
||||
<?php # vim:ft=php:
|
||||
if (!extension_loaded('pdo')) die('skip');
|
||||
$dir = getenv('REDIR_TEST_DIR');
|
||||
if (false == $dir) die('skip no driver');
|
||||
require_once $dir . 'pdo_test.inc';
|
||||
PDOTest::skip();
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
if (getenv('REDIR_TEST_DIR') === false) putenv('REDIR_TEST_DIR='.dirname(__FILE__) . '/../../pdo/tests/');
|
||||
require_once getenv('REDIR_TEST_DIR') . 'pdo_test.inc';
|
||||
$db = PDOTest::factory();
|
||||
|
||||
$db->exec("CREATE TABLE test (id int(10) NOT NULL, PRIMARY KEY (id))");
|
||||
$db->exec("INSERT INTO test (id) VALUES (1)");
|
||||
|
||||
function heLLO($row) {
|
||||
return $row;
|
||||
}
|
||||
|
||||
foreach ($db->query("SELECT * FROM test")->fetchAll(PDO::FETCH_FUNC, 'heLLO') as $row) {
|
||||
var_dump($row);
|
||||
}
|
||||
|
||||
--EXPECT--
|
||||
string(1) "1"
|
Loading…
Reference in New Issue
Block a user