]> granicus.if.org Git - php/commitdiff
Use zpp C in pg_fetch_object
authorNikita Popov <nikita.ppv@gmail.com>
Thu, 13 Aug 2020 14:24:08 +0000 (16:24 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Thu, 13 Aug 2020 14:24:08 +0000 (16:24 +0200)
ext/pgsql/pgsql.c
ext/pgsql/tests/22pg_fetch_object.phpt

index 6ffe0efd847d5af43644dabcec0da6a82e15917a..d2876573bccc610a3615bf7e4a8cdd7e18227557 100644 (file)
@@ -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 {
index 9f9319bcfefff8c958d90cd27eb8d548f3504e60..22c90c4c3c08f1f6e19db07716ee19507f99014a 100644 (file)
@@ -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