summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Zend/zend_API.h11
-rw-r--r--Zend/zend_builtin_functions.c15
2 files changed, 18 insertions, 8 deletions
diff --git a/Zend/zend_API.h b/Zend/zend_API.h
index 886da00de8..4d9962b032 100644
--- a/Zend/zend_API.h
+++ b/Zend/zend_API.h
@@ -142,6 +142,10 @@ ZEND_API int zend_set_hash_symbol(zval *symbol, char *name, int name_length,
return_value->type = IS_RESOURCE;\
return_value->value.lval = l; \
}
+#define RETVAL_BOOL(b) { \
+ return_value->type = IS_BOOL; \
+ return_value->value.lval = b; \
+ }
#define RETVAL_LONG(l) { \
return_value->type = IS_LONG; \
return_value->value.lval = l; \
@@ -171,6 +175,13 @@ ZEND_API int zend_set_hash_symbol(zval *symbol, char *name, int name_length,
return_value->value.lval = l; \
return; \
}
+
+#define RETURN_BOOL(b) { \
+ return_value->type = IS_BOOL; \
+ return_value->value.lval = b; \
+ return; \
+ }
+
#define RETURN_LONG(l) { \
return_value->type = IS_LONG; \
return_value->value.lval = l; \
diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c
index 30eb342ff1..5a808515a7 100644
--- a/Zend/zend_builtin_functions.c
+++ b/Zend/zend_builtin_functions.c
@@ -485,7 +485,8 @@ ZEND_FUNCTION(function_exists)
{
zval **function_name;
char *lcname;
- CLS_FETCH();
+ int retval;
+ ELS_FETCH();
if (ZEND_NUM_ARGS()!=1 || zend_get_parameters_ex(1, &function_name)==FAILURE) {
WRONG_PARAM_COUNT;
@@ -493,13 +494,11 @@ ZEND_FUNCTION(function_exists)
convert_to_string_ex(function_name);
lcname = estrndup((*function_name)->value.str.val, (*function_name)->value.str.len);
zend_str_tolower(lcname, (*function_name)->value.str.len);
- if (zend_hash_exists(CG(function_table), lcname, (*function_name)->value.str.len+1) == FAILURE) {
- efree(lcname);
- RETURN_FALSE;
- } else {
- efree(lcname);
- RETURN_TRUE;
- }
+
+ retval = zend_hash_exists(EG(function_table), lcname, (*function_name)->value.str.len+1);
+ efree(lcname);
+
+ RETURN_BOOL(retval);
}
/* }}} */