ZEND_API int do_bind_function(const zend_op_array *op_array, const zend_op *opline, HashTable *function_table, zend_bool compile_time) /* {{{ */
{
zend_function *function, *new_function;
- zval *lcname, *rtd_key;
+ zval *lcname, *rtd_key, *zv;
if (compile_time) {
lcname = CT_CONSTANT_EX(op_array, opline->op1.constant);
rtd_key = lcname + 1;
}
- function = zend_hash_find_ptr(function_table, Z_STR_P(rtd_key));
+ zv = zend_hash_find_ex(function_table, Z_STR_P(rtd_key), 1);
+ function = (zend_function*)Z_PTR_P(zv);
new_function = zend_arena_alloc(&CG(arena), sizeof(zend_op_array));
memcpy(new_function, function, sizeof(zend_op_array));
if (zend_hash_add_ptr(function_table, Z_STR_P(lcname), new_function) == NULL) {
int error_level = compile_time ? E_COMPILE_ERROR : E_ERROR;
zend_function *old_function;
- if ((old_function = zend_hash_find_ptr(function_table, Z_STR_P(lcname))) != NULL
- && old_function->type == ZEND_USER_FUNCTION
+ zv = zend_hash_find_ex(function_table, Z_STR_P(lcname), 1);
+ ZEND_ASSERT(zv != NULL);
+ old_function = (zend_function*)Z_PTR_P(zv);
+ if (old_function->type == ZEND_USER_FUNCTION
&& old_function->op_array.last > 0) {
zend_error_noreturn(error_level, "Cannot redeclare %s() (previously declared in %s:%d)",
ZSTR_VAL(function->common.function_name),
ZEND_API zend_class_entry *do_bind_class(const zend_op_array* op_array, const zend_op *opline, HashTable *class_table, zend_bool compile_time) /* {{{ */
{
zend_class_entry *ce;
- zval *lcname, *rtd_key;
+ zval *lcname, *rtd_key, *zv;
if (compile_time) {
lcname = CT_CONSTANT_EX(op_array, opline->op1.constant);
lcname = RT_CONSTANT(opline, opline->op1);
rtd_key = lcname + 1;
}
- ce = zend_hash_find_ptr(class_table, Z_STR_P(rtd_key));
- ZEND_ASSERT(ce);
+ zv = zend_hash_find_ex(class_table, Z_STR_P(rtd_key), 1);
+ ZEND_ASSERT(zv);
+ ce = (zend_class_entry*)Z_PTR_P(zv);
ce->refcount++;
if (zend_hash_add_ptr(class_table, Z_STR_P(lcname), ce) == NULL) {
ce->refcount--;
ZEND_API zend_class_entry *do_bind_inherited_class(const zend_op_array *op_array, const zend_op *opline, HashTable *class_table, zend_class_entry *parent_ce, zend_bool compile_time) /* {{{ */
{
zend_class_entry *ce;
- zval *lcname, *rtd_key;
+ zval *lcname, *rtd_key, *zv;
if (compile_time) {
lcname = CT_CONSTANT_EX(op_array, opline->op1.constant);
rtd_key = lcname + 1;
}
- ce = zend_hash_find_ptr(class_table, Z_STR_P(rtd_key));
+ zv = zend_hash_find_ex(class_table, Z_STR_P(rtd_key), 1);
- if (!ce) {
+ if (!zv) {
if (!compile_time) {
/* If we're in compile time, in practice, it's quite possible
* that we'll never reach this class declaration at runtime,
return NULL;
}
+ ce = (zend_class_entry*)Z_PTR_P(zv);
+
if (zend_hash_exists(class_table, Z_STR_P(lcname))) {
zend_error_noreturn(E_COMPILE_ERROR, "Cannot declare %s %s, because the name is already in use", zend_get_object_type(ce), ZSTR_VAL(ce->name));
}
if (!var_name) {
continue;
}
- orig_var = zend_hash_find(symbol_table, var_name);
+ orig_var = zend_hash_find_ex(symbol_table, var_name, 1);
if (orig_var) {
if (Z_TYPE_P(orig_var) == IS_INDIRECT) {
orig_var = Z_INDIRECT_P(orig_var);
if (!php_valid_var_name(ZSTR_VAL(var_name), ZSTR_LEN(var_name))) {
continue;
}
- if (ZSTR_LEN(var_name) == sizeof("GLOBALS")-1 && !strcmp(ZSTR_VAL(var_name), "GLOBALS")) {
+ if (zend_string_equals_literal(var_name, "GLOBALS")) {
continue;
}
- if (ZSTR_LEN(var_name) == sizeof("this")-1 && !strcmp(ZSTR_VAL(var_name), "this")) {
+ if (zend_string_equals_literal(var_name, "this")) {
if (!exception_thrown) {
exception_thrown = 1;
zend_throw_error(NULL, "Cannot re-assign $this");
if (!var_name) {
continue;
}
- orig_var = zend_hash_find(symbol_table, var_name);
+ orig_var = zend_hash_find_ex(symbol_table, var_name, 1);
if (orig_var) {
if (Z_TYPE_P(orig_var) == IS_INDIRECT) {
orig_var = Z_INDIRECT_P(orig_var);
if (!php_valid_var_name(ZSTR_VAL(var_name), ZSTR_LEN(var_name))) {
continue;
}
- if (ZSTR_LEN(var_name) == sizeof("GLOBALS")-1 && !strcmp(ZSTR_VAL(var_name), "GLOBALS")) {
+ if (zend_string_equals_literal(var_name, "GLOBALS")) {
continue;
}
- if (ZSTR_LEN(var_name) == sizeof("this")-1 && !strcmp(ZSTR_VAL(var_name), "this")) {
+ if (zend_string_equals_literal(var_name, "this")) {
if (!exception_thrown) {
exception_thrown = 1;
zend_throw_error(NULL, "Cannot re-assign $this");
if (!php_valid_var_name(ZSTR_VAL(var_name), ZSTR_LEN(var_name))) {
continue;
}
- if (ZSTR_LEN(var_name) == sizeof("this")-1 && !strcmp(ZSTR_VAL(var_name), "this")) {
+ if (zend_string_equals_literal(var_name, "this")) {
if (!exception_thrown) {
exception_thrown = 1;
zend_throw_error(NULL, "Cannot re-assign $this");
}
continue;
}
- orig_var = zend_hash_find(symbol_table, var_name);
+ orig_var = zend_hash_find_ex(symbol_table, var_name, 1);
if (orig_var) {
if (Z_TYPE_P(orig_var) == IS_INDIRECT) {
orig_var = Z_INDIRECT_P(orig_var);
}
- if (ZSTR_LEN(var_name) == sizeof("GLOBALS")-1 && !strcmp(ZSTR_VAL(var_name), "GLOBALS")) {
+ if (zend_string_equals_literal(var_name, "GLOBALS")) {
continue;
}
ZVAL_MAKE_REF(entry);
if (!php_valid_var_name(ZSTR_VAL(var_name), ZSTR_LEN(var_name))) {
continue;
}
- if (ZSTR_LEN(var_name) == sizeof("this")-1 && !strcmp(ZSTR_VAL(var_name), "this")) {
+ if (zend_string_equals_literal(var_name, "this")) {
if (!exception_thrown) {
exception_thrown = 1;
zend_throw_error(NULL, "Cannot re-assign $this");
}
continue;
}
- orig_var = zend_hash_find(symbol_table, var_name);
+ orig_var = zend_hash_find_ex(symbol_table, var_name, 1);
if (orig_var) {
if (Z_TYPE_P(orig_var) == IS_INDIRECT) {
orig_var = Z_INDIRECT_P(orig_var);
}
- if (ZSTR_LEN(var_name) == sizeof("GLOBALS")-1 && !strcmp(ZSTR_VAL(var_name), "GLOBALS")) {
+ if (zend_string_equals_literal(var_name, "GLOBALS")) {
continue;
}
ZVAL_DEREF(entry);
if (!var_name) {
continue;
}
- orig_var = zend_hash_find(symbol_table, var_name);
+ orig_var = zend_hash_find_ex(symbol_table, var_name, 1);
if (orig_var) {
if (Z_TYPE_P(orig_var) == IS_INDIRECT) {
orig_var = Z_INDIRECT_P(orig_var);
}
php_prefix_varname(&final_name, prefix, ZSTR_VAL(var_name), ZSTR_LEN(var_name), 1);
if (php_valid_var_name(Z_STRVAL(final_name), Z_STRLEN(final_name))) {
- if (Z_STRLEN(final_name) == sizeof("this")-1 && !strcmp(Z_STRVAL(final_name), "this")) {
+ if (zend_string_equals_literal(Z_STR(final_name), "this")) {
if (!exception_thrown) {
exception_thrown = 1;
zend_throw_error(NULL, "Cannot re-assign $this");
if (!var_name) {
continue;
}
- orig_var = zend_hash_find(symbol_table, var_name);
+ orig_var = zend_hash_find_ex(symbol_table, var_name, 1);
if (orig_var) {
if (Z_TYPE_P(orig_var) == IS_INDIRECT) {
orig_var = Z_INDIRECT_P(orig_var);
}
php_prefix_varname(&final_name, prefix, ZSTR_VAL(var_name), ZSTR_LEN(var_name), 1);
if (php_valid_var_name(Z_STRVAL(final_name), Z_STRLEN(final_name))) {
- if (Z_STRLEN(final_name) == sizeof("this")-1 && !strcmp(Z_STRVAL(final_name), "this")) {
+ if (zend_string_equals_literal(Z_STR(final_name), "this")) {
if (!exception_thrown) {
exception_thrown = 1;
zend_throw_error(NULL, "Cannot re-assign $this");
if (ZSTR_LEN(var_name) == 0) {
continue;
}
- orig_var = zend_hash_find(symbol_table, var_name);
+ orig_var = zend_hash_find_ex(symbol_table, var_name, 1);
if (orig_var) {
if (Z_TYPE_P(orig_var) == IS_INDIRECT) {
orig_var = Z_INDIRECT_P(orig_var);
}
php_prefix_varname(&final_name, prefix, ZSTR_VAL(var_name), ZSTR_LEN(var_name), 1);
if (php_valid_var_name(Z_STRVAL(final_name), Z_STRLEN(final_name))) {
- if (Z_STRLEN(final_name) == sizeof("this")-1 && !strcmp(Z_STRVAL(final_name), "this")) {
+ if (zend_string_equals_literal(Z_STR(final_name), "this")) {
if (!exception_thrown) {
exception_thrown = 1;
zend_throw_error(NULL, "Cannot re-assign $this");
if (!php_valid_var_name(ZSTR_VAL(var_name), ZSTR_LEN(var_name))) {
continue;
}
- if (ZSTR_LEN(var_name) == sizeof("this")-1 && !strcmp(ZSTR_VAL(var_name), "this")) {
+ if (zend_string_equals_literal(var_name, "this")) {
if (!exception_thrown) {
exception_thrown = 1;
zend_throw_error(NULL, "Cannot re-assign $this");
if (ZSTR_LEN(var_name) == 0) {
continue;
}
- orig_var = zend_hash_find(symbol_table, var_name);
+ orig_var = zend_hash_find_ex(symbol_table, var_name, 1);
if (orig_var) {
if (Z_TYPE_P(orig_var) == IS_INDIRECT) {
orig_var = Z_INDIRECT_P(orig_var);
}
php_prefix_varname(&final_name, prefix, ZSTR_VAL(var_name), ZSTR_LEN(var_name), 1);
if (php_valid_var_name(Z_STRVAL(final_name), Z_STRLEN(final_name))) {
- if (Z_STRLEN(final_name) == sizeof("this")-1 && !strcmp(Z_STRVAL(final_name), "this")) {
+ if (zend_string_equals_literal(Z_STR(final_name), "this")) {
if (!exception_thrown) {
exception_thrown = 1;
zend_throw_error(NULL, "Cannot re-assign $this");
if (!php_valid_var_name(ZSTR_VAL(var_name), ZSTR_LEN(var_name))) {
continue;
}
- if (ZSTR_LEN(var_name) == sizeof("this")-1 && !strcmp(ZSTR_VAL(var_name), "this")) {
+ if (zend_string_equals_literal(var_name, "this")) {
if (!exception_thrown) {
exception_thrown = 1;
zend_throw_error(NULL, "Cannot re-assign $this");
zend_string_release(str);
}
if (php_valid_var_name(Z_STRVAL(final_name), Z_STRLEN(final_name))) {
- if (Z_STRLEN(final_name) == sizeof("this")-1 && !strcmp(Z_STRVAL(final_name), "this")) {
+ if (zend_string_equals_literal(Z_STR(final_name), "this")) {
if (!exception_thrown) {
exception_thrown = 1;
zend_throw_error(NULL, "Cannot re-assign $this");
zend_string_release(str);
}
if (php_valid_var_name(Z_STRVAL(final_name), Z_STRLEN(final_name))) {
- if (Z_STRLEN(final_name) == sizeof("this")-1 && !strcmp(Z_STRVAL(final_name), "this")) {
+ if (zend_string_equals_literal(Z_STR(final_name), "this")) {
if (!exception_thrown) {
exception_thrown = 1;
zend_throw_error(NULL, "Cannot re-assign $this");
continue;
}
}
- if (Z_STRLEN(final_name) == sizeof("this")-1 && !strcmp(Z_STRVAL(final_name), "this")) {
+ if (zend_string_equals_literal(Z_STR(final_name), "this")) {
if (!exception_thrown) {
exception_thrown = 1;
zend_throw_error(NULL, "Cannot re-assign $this");
continue;
}
}
- if (Z_STRLEN(final_name) == sizeof("this")-1 && !strcmp(Z_STRVAL(final_name), "this")) {
+ if (zend_string_equals_literal(Z_STR(final_name), "this")) {
if (!exception_thrown) {
exception_thrown = 1;
zend_throw_error(NULL, "Cannot re-assign $this");
if (!php_valid_var_name(ZSTR_VAL(var_name), ZSTR_LEN(var_name))) {
continue;
}
- if (ZSTR_LEN(var_name) == sizeof("this")-1 && !strcmp(ZSTR_VAL(var_name), "this")) {
+ if (zend_string_equals_literal(var_name, "this")) {
if (!exception_thrown) {
exception_thrown = 1;
zend_throw_error(NULL, "Cannot re-assign $this");
}
continue;
}
- orig_var = zend_hash_find(symbol_table, var_name);
+ orig_var = zend_hash_find_ex(symbol_table, var_name, 1);
if (orig_var) {
if (Z_TYPE_P(orig_var) == IS_INDIRECT) {
orig_var = Z_INDIRECT_P(orig_var);
if (!php_valid_var_name(ZSTR_VAL(var_name), ZSTR_LEN(var_name))) {
continue;
}
- if (ZSTR_LEN(var_name) == sizeof("this")-1 && !strcmp(ZSTR_VAL(var_name), "this")) {
+ if (zend_string_equals_literal(var_name, "this")) {
if (!exception_thrown) {
exception_thrown = 1;
zend_throw_error(NULL, "Cannot re-assign $this");
}
continue;
}
- orig_var = zend_hash_find(symbol_table, var_name);
+ orig_var = zend_hash_find_ex(symbol_table, var_name, 1);
if (orig_var) {
if (Z_TYPE_P(orig_var) == IS_INDIRECT) {
orig_var = Z_INDIRECT_P(orig_var);
ZEND_HASH_FOREACH_STR_KEY_VAL(src, string_key, src_entry) {
if (string_key) {
- if ((dest_entry = zend_hash_find(dest, string_key)) != NULL) {
+ if ((dest_entry = zend_hash_find_ex(dest, string_key, 1)) != NULL) {
zval *src_zval = src_entry;
zval *dest_zval = dest_entry;
HashTable *thash;
ZVAL_DEREF(src_zval);
if (string_key) {
if (Z_TYPE_P(src_zval) != IS_ARRAY ||
- (dest_entry = zend_hash_find(dest, string_key)) == NULL ||
+ (dest_entry = zend_hash_find_ex(dest, string_key, 1)) == NULL ||
(Z_TYPE_P(dest_entry) != IS_ARRAY &&
(!Z_ISREF_P(dest_entry) || Z_TYPE_P(Z_REFVAL_P(dest_entry)) != IS_ARRAY))) {
} else {
ok = 1;
for (i = 1; i < argc; i++) {
- if ((data = zend_hash_find_ind(Z_ARRVAL(args[i]), p->key)) == NULL ||
+ if ((data = zend_hash_find_ex_ind(Z_ARRVAL(args[i]), p->key, 1)) == NULL ||
(intersect_data_compare_func &&
intersect_data_compare_func(val, data) != 0)
) {
} else {
ok = 1;
for (i = 1; i < argc; i++) {
- if ((data = zend_hash_find_ind(Z_ARRVAL(args[i]), p->key)) != NULL &&
+ if ((data = zend_hash_find_ex_ind(Z_ARRVAL(args[i]), p->key, 1)) != NULL &&
(!diff_data_compare_func ||
diff_data_compare_func(val, data) == 0)
) {