summaryrefslogtreecommitdiff
path: root/lang/php53/files/patch-ext_standard_array.c
blob: bd6d4d0c95d48c854294caf5df2d3aacd69822e6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
--- 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);