]> granicus.if.org Git - php/commitdiff
Check that object can actually return a class entry. I need this for a
authorAndrei Zmievski <andrei@php.net>
Sat, 5 Mar 2005 00:45:47 +0000 (00:45 +0000)
committerAndrei Zmievski <andrei@php.net>
Sat, 5 Mar 2005 00:45:47 +0000 (00:45 +0000)
class-entry-less helper objects that should not be present in the class
table.

ext/standard/array.c

index 9848de248d6cf5f02bc0eb4ab1a66bfc04003367..1180c9e45039c17e459b311d33dcf9314b8336fc 100644 (file)
@@ -323,7 +323,7 @@ PHP_FUNCTION(count)
                        /* it the object implements Countable we call its count() method */
                        zval *retval;
 
-                       if (instanceof_function(Z_OBJCE_P(array), spl_ce_Countable TSRMLS_CC)) {
+                       if (Z_OBJ_HT_P(array)->get_class_entry && instanceof_function(Z_OBJCE_P(array), spl_ce_Countable TSRMLS_CC)) {
                                zend_call_method_with_0_params(&array, NULL, NULL, "count", &retval);
                                RETVAL_LONG(Z_LVAL_P(retval));
                                zval_ptr_dtor(&retval);
@@ -331,7 +331,7 @@ PHP_FUNCTION(count)
                        }
 #endif
                        /* if not we return the number of properties (not taking visibility into account) */
-                       if (Z_OBJ_HT(*array)->count_elements) {
+                       if (Z_OBJ_HT_P(array)->count_elements) {
                                RETVAL_LONG(1);
                                if (SUCCESS == Z_OBJ_HT(*array)->count_elements(array, &Z_LVAL_P(return_value) TSRMLS_CC)) {
                                        return;