mirror of
https://git.FreeBSD.org/ports.git
synced 2024-12-28 05:29:48 +00:00
6654475e66
Spotted by: Roman Neuhauser <neuhauser@sigpipe.cz>
34 lines
1.2 KiB
C
34 lines
1.2 KiB
C
--- ext/standard/array.c.orig Mon Feb 12 20:20:48 2007
|
|
+++ ext/standard/array.c Mon Feb 12 20:22:14 2007
|
|
@@ -295,6 +295,7 @@
|
|
PHP_FUNCTION(count)
|
|
{
|
|
zval *array;
|
|
+ zend_class_entry **ce_Countable;
|
|
long mode = COUNT_NORMAL;
|
|
|
|
if (zend_parse_parameters (ZEND_NUM_ARGS() TSRMLS_CC, "z|l", &array, &mode) == FAILURE)
|
|
@@ -308,11 +309,11 @@
|
|
RETURN_LONG (php_count_recursive (array, mode TSRMLS_CC));
|
|
break;
|
|
case IS_OBJECT: {
|
|
-#ifdef HAVE_SPL
|
|
/* it the object implements Countable we call its count() method */
|
|
zval *retval;
|
|
|
|
- if (Z_OBJ_HT_P(array)->get_class_entry && instanceof_function(Z_OBJCE_P(array), spl_ce_Countable TSRMLS_CC)) {
|
|
+ if (zend_lookup_class_ex("Countable", 9, 0, &ce_Countable TSRMLS_CC) != FAILURE) {
|
|
+ if (Z_OBJ_HT_P(array)->get_class_entry && instanceof_function(Z_OBJCE_P(array), *ce_Countable TSRMLS_CC)) {
|
|
zend_call_method_with_0_params(&array, NULL, NULL, "count", &retval);
|
|
if (retval) {
|
|
convert_to_long(retval);
|
|
@@ -321,7 +322,7 @@
|
|
}
|
|
return;
|
|
}
|
|
-#endif
|
|
+ }
|
|
/* if not we return the number of properties (not taking visibility into account) */
|
|
if (Z_OBJ_HT_P(array)->count_elements) {
|
|
RETVAL_LONG(1);
|