cvs: php4(PHP_4_2_0) /ext/standard aggregation.c
| From: | Jani Taskinen | Date: | Fri, 22 Mar 2002 01:12:52 +0000 |
| Subject: | cvs: php4(PHP_4_2_0) /ext/standard aggregation.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-10570@lists.php.net to get a copy of this message | ||
sniper Thu Mar 21 20:12:52 2002 EDT
Modified files: (Branch: PHP_4_2_0)
/php4/ext/standard aggregation.c
Log:
MFH fix for bug #16182
Index: php4/ext/standard/aggregation.c
diff -u php4/ext/standard/aggregation.c:1.3 php4/ext/standard/aggregation.c:1.3.2.1
--- php4/ext/standard/aggregation.c:1.3 Sat Mar 2 11:41:55 2002
+++ php4/ext/standard/aggregation.c Thu Mar 21 20:12:52 2002
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: aggregation.c,v 1.3 2002/03/02 16:41:55 hholzgra Exp $ */
+/* $Id: aggregation.c,v 1.3.2.1 2002/03/22 01:12:52 sniper Exp $ */
#include "php.h"
#include "basic_functions.h"
@@ -72,20 +72,25 @@
uint func_name_len;
ulong num_key;
zval *list_hash = NULL;
+#if HAVE_PCRE || HAVE_BUNDLED_PCRE
pcre *re = NULL;
pcre_extra *re_extra = NULL;
int re_options = 0;
+#endif
/*
* Flip the array for easy lookup, or compile the regexp.
*/
if (aggr_type == AGGREGATE_BY_LIST) {
list_hash = array_to_hash(aggr_filter);
- } else if (aggr_type == AGGREGATE_BY_REGEXP) {
+ }
+#if HAVE_PCRE || HAVE_BUNDLED_PCRE
+ else if (aggr_type == AGGREGATE_BY_REGEXP) {
if ((re = pcre_get_compiled_regex(Z_STRVAL_P(aggr_filter), &re_extra, &re_options)) ==
NULL) {
return;
}
}
+#endif
/*
* "Just because it's not nice doesn't mean it's not miraculous."
@@ -108,9 +113,13 @@
/* 2. private methods (heh, like we really have them) */
func_name[0] == '_' ||
/* 3. explicitly excluded methods */
- (aggr_type == AGGREGATE_BY_LIST && zend_hash_exists(Z_ARRVAL_P(list_hash), func_name,
func_name_len)) ||
+ (aggr_type == AGGREGATE_BY_LIST && zend_hash_exists(Z_ARRVAL_P(list_hash), func_name,
func_name_len))
+#if HAVE_PCRE || HAVE_BUNDLED_PCRE
+ ||
/* 4. methods matching regexp as modified by the exclusion flag */
- (aggr_type == AGGREGATE_BY_REGEXP && (pcre_exec(re, re_extra, func_name,
func_name_len-1, 0, 0, NULL, 0) < 0) ^ exclude) == 1) {
+ (aggr_type == AGGREGATE_BY_REGEXP && (pcre_exec(re, re_extra, func_name,
func_name_len-1, 0, 0, NULL, 0) < 0) ^ exclude) == 1
+#endif
+ ) {
zend_hash_move_forward_ex(&from_ce->function_table, &pos);
continue;
}
@@ -163,9 +172,11 @@
uint prop_name_len;
ulong num_key;
zval *list_hash = NULL;
+#if HAVE_PCRE || HAVE_BUNDLED_PCRE
pcre *re = NULL;
pcre_extra *re_extra = NULL;
int re_options = 0;
+#endif
if (!from_ce->constants_updated) {
zend_hash_apply_with_argument(&from_ce->default_properties, (apply_func_arg_t)
zval_update_constant, (void *) 1 TSRMLS_CC);
@@ -177,11 +188,14 @@
*/
if (aggr_type == AGGREGATE_BY_LIST) {
list_hash = array_to_hash(aggr_filter);
- } else if (aggr_type == AGGREGATE_BY_REGEXP) {
+ }
+#if HAVE_PCRE || HAVE_BUNDLED_PCRE
+ else if (aggr_type == AGGREGATE_BY_REGEXP) {
if ((re = pcre_get_compiled_regex(Z_STRVAL_P(aggr_filter), &re_extra, &re_options)) ==
NULL) {
return;
}
}
+#endif
/*
* "Just because it's not nice doesn't mean it's not miraculous."
@@ -202,9 +216,13 @@
* 1. private properties (heh, like we really have them) */
if (prop_name[0] == '_' ||
/* 2. explicitly excluded properties */
- (aggr_type == AGGREGATE_BY_LIST && zend_hash_exists(Z_ARRVAL_P(list_hash), prop_name,
prop_name_len)) ||
+ (aggr_type == AGGREGATE_BY_LIST && zend_hash_exists(Z_ARRVAL_P(list_hash), prop_name,
prop_name_len))
+#if HAVE_PCRE || HAVE_BUNDLED_PCRE
+ ||
/* 3. properties matching regexp as modified by the exclusion flag */
- (aggr_type == AGGREGATE_BY_REGEXP && (pcre_exec(re, re_extra, prop_name,
prop_name_len-1, 0, 0, NULL, 0) < 0) ^ exclude) == 1) {
+ (aggr_type == AGGREGATE_BY_REGEXP && (pcre_exec(re, re_extra, prop_name,
prop_name_len-1, 0, 0, NULL, 0) < 0) ^ exclude) == 1
+#endif
+ ) {
zend_hash_move_forward_ex(&from_ce->default_properties, &pos);
continue;
}
@@ -310,6 +328,9 @@
efree(class_name_lc);
return;
}
+#ifdef ZEND_ENGINE_2
+ ce = *(zend_class_entry**)ce;
+#endif
/*
* And God said, Let there be light; and there was light. But only once.
@@ -439,15 +460,6 @@
/* }}} */
-/* {{{ proto void aggregate_methods_by_regexp(object obj, string class, string regexp [, bool
exclude])
- */
-PHP_FUNCTION(aggregate_methods_by_regexp)
-{
- aggregate(INTERNAL_FUNCTION_PARAM_PASSTHRU, AGGREGATE_METHODS, AGGREGATE_BY_REGEXP);
-}
-/* }}} */
-
-
/* {{{ proto void aggregate_properties(object obj, string class)
*/
PHP_FUNCTION(aggregate_properties)
@@ -465,6 +477,15 @@
}
/* }}} */
+#if HAVE_PCRE || HAVE_BUNDLED_PCRE
+/* {{{ proto void aggregate_methods_by_regexp(object obj, string class, string regexp [, bool
exclude])
+ */
+PHP_FUNCTION(aggregate_methods_by_regexp)
+{
+ aggregate(INTERNAL_FUNCTION_PARAM_PASSTHRU, AGGREGATE_METHODS, AGGREGATE_BY_REGEXP);
+}
+/* }}} */
+
/* {{{ proto void aggregate_properties_by_regexp(object obj, string class, string regexp [, bool
exclude])
*/
@@ -473,6 +494,7 @@
aggregate(INTERNAL_FUNCTION_PARAM_PASSTHRU, AGGREGATE_PROPERTIES, AGGREGATE_BY_REGEXP);
}
/* }}} */
+#endif
/* {{{ proto array aggregation_info(object obj)