mirror of
https://github.com/php/php-src.git
synced 2024-09-21 18:07:23 +00:00
Expand SEPARATE_STRING()
This commit is contained in:
parent
a31f251507
commit
1613b6a06b
@ -1292,7 +1292,6 @@ static zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_wrong_property_check(
|
||||
|
||||
static zend_never_inline void zend_assign_to_string_offset(zval *str, zval *dim, zval *value, zval *result EXECUTE_DATA_DC)
|
||||
{
|
||||
zend_string *old_str;
|
||||
zend_uchar c;
|
||||
size_t string_len;
|
||||
zend_long offset;
|
||||
@ -1335,17 +1334,15 @@ static zend_never_inline void zend_assign_to_string_offset(zval *str, zval *dim,
|
||||
if ((size_t)offset >= Z_STRLEN_P(str)) {
|
||||
/* Extend string if needed */
|
||||
zend_long old_len = Z_STRLEN_P(str);
|
||||
Z_STR_P(str) = zend_string_extend(Z_STR_P(str), offset + 1, 0);
|
||||
Z_TYPE_INFO_P(str) = IS_STRING_EX;
|
||||
ZVAL_NEW_STR(str, zend_string_extend(Z_STR_P(str), offset + 1, 0));
|
||||
memset(Z_STRVAL_P(str) + old_len, ' ', offset - old_len);
|
||||
Z_STRVAL_P(str)[offset+1] = 0;
|
||||
} else if (!Z_REFCOUNTED_P(str)) {
|
||||
old_str = Z_STR_P(str);
|
||||
Z_STR_P(str) = zend_string_init(Z_STRVAL_P(str), Z_STRLEN_P(str), 0);
|
||||
Z_TYPE_INFO_P(str) = IS_STRING_EX;
|
||||
zend_string_release(old_str);
|
||||
ZVAL_NEW_STR(str, zend_string_init(Z_STRVAL_P(str), Z_STRLEN_P(str), 0));
|
||||
} else if (Z_REFCOUNT_P(str) > 1) {
|
||||
Z_DELREF_P(str);
|
||||
ZVAL_NEW_STR(str, zend_string_init(Z_STRVAL_P(str), Z_STRLEN_P(str), 0));
|
||||
} else {
|
||||
SEPARATE_STRING(str);
|
||||
zend_string_forget_hash_val(Z_STR_P(str));
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user