[PATCH] array_product()
| From: | Arpad Ray | Date: | Sat, 29 Oct 2005 07:03:09 +0000 |
| Subject: | [PATCH] array_product() | ||
| Groups: | php.internals | ||
| Request: | Send a blank email to internals+get-19810@lists.php.net to get a copy of this message | ||
The array_product() function is completely broken. I've filed a bug at
http://bugs.php.net/bug.php?id=35014 describing
the problem, but to summarise
it returns 0 for all valid input and when the input is an empty array.
I've also posted a patch, which fixes everything for me. I would appreciate
any feedback, especially since this is my first patch :)
Thanks,
Arpad Ray
Index: ext/standard/array.c
===================================================================
RCS file: /repository/php-src/ext/standard/array.c,v
retrieving revision 1.308.2.10
diff -u -u -b -B -r1.308.2.10 array.c
--- ext/standard/array.c 28 Oct 2005 09:57:35 -0000 1.308.2.10
+++ ext/standard/array.c 29 Oct 2005 06:04:22 -0000
@@ -3997,7 +3997,12 @@
return;
}
- ZVAL_LONG(return_value, 0);
+ if (zend_hash_num_elements(Z_ARRVAL_PP(input)) == 0) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Array must
contain at least one element");
+ return;
+ }
+
+ ZVAL_LONG(return_value, 1);
for (zend_hash_internal_pointer_reset_ex(Z_ARRVAL_PP(input), &pos);
zend_hash_get_current_data_ex(Z_ARRVAL_PP(input), (void
**)&entry, &pos) == SUCCESS;