Skip to content

Commit 5b2ddf5

Browse files
committed
Export zend_use_resource_as_offset()
Use a common implementation to generate this error message, as we do so in quite a few places dealing with array keys.
1 parent 7d6a7e7 commit 5b2ddf5

File tree

7 files changed

+11
-12
lines changed

7 files changed

+11
-12
lines changed

Zend/zend_API.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1987,7 +1987,7 @@ ZEND_API zend_result array_set_zval_key(HashTable *ht, zval *key, zval *value) /
19871987
result = zend_hash_update(ht, ZSTR_EMPTY_ALLOC(), value);
19881988
break;
19891989
case IS_RESOURCE:
1990-
zend_error(E_WARNING, "Resource ID#%d used as offset, casting to integer (%d)", Z_RES_HANDLE_P(key), Z_RES_HANDLE_P(key));
1990+
zend_use_resource_as_offset(key);
19911991
result = zend_hash_index_update(ht, Z_RES_HANDLE_P(key), value);
19921992
break;
19931993
case IS_FALSE:

Zend/zend_execute.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2164,7 +2164,7 @@ static zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_cannot_add_element(vo
21642164
zend_throw_error(NULL, "Cannot add element to the array as the next element is already occupied");
21652165
}
21662166

2167-
static zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_use_resource_as_offset(const zval *dim)
2167+
ZEND_API ZEND_COLD void ZEND_FASTCALL zend_use_resource_as_offset(const zval *dim)
21682168
{
21692169
zend_error(E_WARNING, "Resource ID#%d used as offset, casting to integer (%d)", Z_RES_HANDLE_P(dim), Z_RES_HANDLE_P(dim));
21702170
}

Zend/zend_execute.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ ZEND_API ZEND_COLD void ZEND_FASTCALL zend_missing_arg_error(zend_execute_data *
6262
ZEND_API ZEND_COLD void ZEND_FASTCALL zend_deprecated_function(const zend_function *fbc);
6363
ZEND_API ZEND_COLD void ZEND_FASTCALL zend_false_to_array_deprecated(void);
6464
ZEND_COLD void ZEND_FASTCALL zend_param_must_be_ref(const zend_function *func, uint32_t arg_num);
65+
ZEND_API ZEND_COLD void ZEND_FASTCALL zend_use_resource_as_offset(const zval *dim);
6566

6667
ZEND_API bool ZEND_FASTCALL zend_verify_ref_assignable_zval(zend_reference *ref, zval *zv, bool strict);
6768
ZEND_API bool ZEND_FASTCALL zend_verify_prop_assignable_by_ref(zend_property_info *prop_info, zval *orig_val, bool strict);

ext/opcache/jit/zend_jit_helpers.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -384,7 +384,7 @@ static void ZEND_FASTCALL zend_jit_fetch_dim_r_helper(zend_array *ht, zval *dim,
384384
hval = zend_dval_to_lval_safe(Z_DVAL_P(dim));
385385
goto num_index;
386386
case IS_RESOURCE:
387-
zend_error(E_WARNING, "Resource ID#%d used as offset, casting to integer (%d)", Z_RES_HANDLE_P(dim), Z_RES_HANDLE_P(dim));
387+
zend_use_resource_as_offset(dim);
388388
hval = Z_RES_HANDLE_P(dim);
389389
goto num_index;
390390
case IS_FALSE:
@@ -449,7 +449,7 @@ static void ZEND_FASTCALL zend_jit_fetch_dim_is_helper(zend_array *ht, zval *dim
449449
hval = zend_dval_to_lval_safe(Z_DVAL_P(dim));
450450
goto num_index;
451451
case IS_RESOURCE:
452-
zend_error(E_WARNING, "Resource ID#%d used as offset, casting to integer (%d)", Z_RES_HANDLE_P(dim), Z_RES_HANDLE_P(dim));
452+
zend_use_resource_as_offset(dim);
453453
hval = Z_RES_HANDLE_P(dim);
454454
goto num_index;
455455
case IS_FALSE:
@@ -512,7 +512,7 @@ static int ZEND_FASTCALL zend_jit_fetch_dim_isset_helper(zend_array *ht, zval *d
512512
hval = zend_dval_to_lval_safe(Z_DVAL_P(dim));
513513
goto num_index;
514514
case IS_RESOURCE:
515-
zend_error(E_WARNING, "Resource ID#%d used as offset, casting to integer (%d)", Z_RES_HANDLE_P(dim), Z_RES_HANDLE_P(dim));
515+
zend_use_resource_as_offset(dim);
516516
hval = Z_RES_HANDLE_P(dim);
517517
goto num_index;
518518
case IS_FALSE:
@@ -579,7 +579,7 @@ static zval* ZEND_FASTCALL zend_jit_fetch_dim_rw_helper(zend_array *ht, zval *di
579579
hval = zend_dval_to_lval_safe(Z_DVAL_P(dim));
580580
goto num_index;
581581
case IS_RESOURCE:
582-
zend_error(E_WARNING, "Resource ID#%d used as offset, casting to integer (%d)", Z_RES_HANDLE_P(dim), Z_RES_HANDLE_P(dim));
582+
zend_use_resource_as_offset(dim);
583583
hval = Z_RES_HANDLE_P(dim);
584584
goto num_index;
585585
case IS_FALSE:
@@ -642,7 +642,7 @@ static zval* ZEND_FASTCALL zend_jit_fetch_dim_w_helper(zend_array *ht, zval *dim
642642
hval = zend_dval_to_lval_safe(Z_DVAL_P(dim));
643643
goto num_index;
644644
case IS_RESOURCE:
645-
zend_error(E_WARNING, "Resource ID#%d used as offset, casting to integer (%d)", Z_RES_HANDLE_P(dim), Z_RES_HANDLE_P(dim));
645+
zend_use_resource_as_offset(dim);
646646
hval = Z_RES_HANDLE_P(dim);
647647
goto num_index;
648648
case IS_FALSE:

ext/spl/spl_array.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -303,8 +303,7 @@ static zend_result get_hash_key(spl_hash_key *key, spl_array_object *intern, zva
303303
}
304304
return SUCCESS;
305305
case IS_RESOURCE:
306-
zend_error(E_WARNING, "Resource ID#%d used as offset, casting to integer (%d)",
307-
Z_RES_P(offset)->handle, Z_RES_P(offset)->handle);
306+
zend_use_resource_as_offset(offset);
308307
key->key = NULL;
309308
key->h = Z_RES_P(offset)->handle;
310309
break;

ext/spl/spl_fixedarray.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -333,8 +333,7 @@ static zend_long spl_offset_convert_to_long(zval *offset) /* {{{ */
333333
offset = Z_REFVAL_P(offset);
334334
goto try_again;
335335
case IS_RESOURCE:
336-
zend_error(E_WARNING, "Resource ID#%d used as offset, casting to integer (%d)",
337-
Z_RES_HANDLE_P(offset), Z_RES_HANDLE_P(offset));
336+
zend_use_resource_as_offset(offset);
338337
return Z_RES_HANDLE_P(offset);
339338
}
340339

ext/standard/array.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6086,7 +6086,7 @@ PHP_FUNCTION(array_key_exists)
60866086
RETVAL_BOOL(zend_hash_index_exists(ht, 1));
60876087
break;
60886088
case IS_RESOURCE:
6089-
zend_error(E_WARNING, "Resource ID#%d used as offset, casting to integer (%d)", Z_RES_HANDLE_P(key), Z_RES_HANDLE_P(key));
6089+
zend_use_resource_as_offset(key);
60906090
RETVAL_BOOL(zend_hash_index_exists(ht, Z_RES_HANDLE_P(key)));
60916091
break;
60926092
default:

0 commit comments

Comments
 (0)