From 6bd2b8dfa5d2b9669564b8c0fe6c34a92e366f5b Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Sun, 19 Jan 2025 23:35:24 +0000 Subject: [PATCH] ext/pdo: Throw an exception instead of fatal error if the class is not found (#17528) --- ext/pdo/pdo_stmt.c | 2 +- .../tests/pdo_stmt_class_ctor_errors_cannot_find_class.phpt | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/ext/pdo/pdo_stmt.c b/ext/pdo/pdo_stmt.c index 0154707ab2ebe..0c115c24cf2b6 100644 --- a/ext/pdo/pdo_stmt.c +++ b/ext/pdo/pdo_stmt.c @@ -1231,7 +1231,7 @@ PHP_METHOD(PDOStatement, fetchAll) zend_argument_type_error(2, "must be of type string, %s given", zend_zval_value_name(arg2)); RETURN_THROWS(); } - stmt->fetch.cls.ce = zend_fetch_class(Z_STR_P(arg2), ZEND_FETCH_CLASS_AUTO); + stmt->fetch.cls.ce = zend_lookup_class(Z_STR_P(arg2)); if (!stmt->fetch.cls.ce) { zend_argument_type_error(2, "must be a valid class"); RETURN_THROWS(); diff --git a/ext/pdo/tests/pdo_stmt_class_ctor_errors_cannot_find_class.phpt b/ext/pdo/tests/pdo_stmt_class_ctor_errors_cannot_find_class.phpt index 0bd039d864339..f5b07c681039f 100644 --- a/ext/pdo/tests/pdo_stmt_class_ctor_errors_cannot_find_class.phpt +++ b/ext/pdo/tests/pdo_stmt_class_ctor_errors_cannot_find_class.phpt @@ -39,7 +39,6 @@ require_once getenv('REDIR_TEST_DIR') . 'pdo_test.inc'; $db = PDOTest::factory(); PDOTest::dropTableIfExists($db, "pdo_fetch_all_class_error_unknown"); ?> ---EXPECTF-- +--EXPECT-- TypeError: PDOStatement::setFetchMode(): Argument #2 must be a valid class - -Fatal error: Class "Unknown" not found in %s on line %d +TypeError: PDOStatement::fetchAll(): Argument #2 must be a valid class