From: Nikita Popov Date: Thu, 13 Aug 2020 14:24:08 +0000 (+0200) Subject: Use zpp C in pg_fetch_object X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=396b47061f40b9a624b1dee7c018de08acd02836;p=php Use zpp C in pg_fetch_object --- diff --git a/ext/pgsql/pgsql.c b/ext/pgsql/pgsql.c index 6ffe0efd84..d2876573bc 100644 --- a/ext/pgsql/pgsql.c +++ b/ext/pgsql/pgsql.c @@ -2480,19 +2480,11 @@ static void php_pgsql_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, zend_long result_ zend_class_entry *ce = NULL; if (into_object) { - zend_string *class_name = NULL; - - if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|z!Sz", &result, &zrow, &class_name, &ctor_params) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|z!Cz", &result, &zrow, &ce, &ctor_params) == FAILURE) { RETURN_THROWS(); } - if (!class_name) { - ce = zend_standard_class_def; - } else { - ce = zend_fetch_class(class_name, ZEND_FETCH_CLASS_AUTO); - } if (!ce) { - php_error_docref(NULL, E_WARNING, "Could not find class '%s'", ZSTR_VAL(class_name)); - return; + ce = zend_standard_class_def; } result_type = PGSQL_ASSOC; } else { diff --git a/ext/pgsql/tests/22pg_fetch_object.phpt b/ext/pgsql/tests/22pg_fetch_object.phpt index 9f9319bcfe..22c90c4c3c 100644 --- a/ext/pgsql/tests/22pg_fetch_object.phpt +++ b/ext/pgsql/tests/22pg_fetch_object.phpt @@ -22,6 +22,12 @@ $rows = pg_num_rows($result); var_dump(pg_fetch_object($result, NULL, 'test_class', array(1, 2))); +try { + var_dump(pg_fetch_object($result, NULL, 'does_not_exist')); +} catch (TypeError $e) { + echo $e->getMessage(), "\n"; +} + echo "Ok\n"; ?> --EXPECT-- @@ -34,4 +40,5 @@ object(test_class)#1 (3) { ["bin"]=> NULL } +pg_fetch_object(): Argument #3 ($class_name) must be a valid class name, does_not_exist given Ok