diff options
-rw-r--r-- | Zend/zend_API.h | 11 | ||||
-rw-r--r-- | Zend/zend_builtin_functions.c | 15 |
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); } /* }}} */ |