Skip to content

Commit af34121

Browse files
committed
se zval_ptr_dtor_str() instead of zend_string_release_ex(Z_STR(*), 0)
1 parent 5f19816 commit af34121

12 files changed

+38
-38
lines changed

Zend/zend_execute.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -3169,7 +3169,7 @@ static zend_never_inline zend_op_array* ZEND_FASTCALL zend_include_or_eval(zval
31693169
zend_destroy_file_handle(&file_handle);
31703170
zend_string_release_ex(resolved_path, 0);
31713171
if (Z_TYPE(tmp_inc_filename) != IS_UNDEF) {
3172-
zend_string_release_ex(Z_STR(tmp_inc_filename), 0);
3172+
zval_ptr_dtor_str(&tmp_inc_filename);
31733173
}
31743174
return op_array;
31753175
} else {
@@ -3207,7 +3207,7 @@ static zend_never_inline zend_op_array* ZEND_FASTCALL zend_include_or_eval(zval
32073207
}
32083208

32093209
if (Z_TYPE(tmp_inc_filename) != IS_UNDEF) {
3210-
zend_string_release_ex(Z_STR(tmp_inc_filename), 0);
3210+
zval_ptr_dtor_str(&tmp_inc_filename);
32113211
}
32123212
return new_op_array;
32133213
}

Zend/zend_highlight.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ ZEND_API void zend_highlight(zend_syntax_highlighter_ini *syntax_highlighter_ini
156156
case T_DOC_COMMENT:
157157
break;
158158
default:
159-
zend_string_release_ex(Z_STR(token), 0);
159+
zval_ptr_dtor_str(&token);
160160
break;
161161
}
162162
}
@@ -219,7 +219,7 @@ ZEND_API void zend_strip(void)
219219
break;
220220

221221
default:
222-
zend_string_release_ex(Z_STR(token), 0);
222+
zval_ptr_dtor_str(&token);
223223
break;
224224
}
225225
}

Zend/zend_object_handlers.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -572,7 +572,7 @@ ZEND_API uint32_t *zend_get_property_guard(zend_object *zobj, zend_string *membe
572572
EXPECTED(zend_string_equal_content(str, member)))) {
573573
return &Z_PROPERTY_GUARD_P(zv);
574574
} else if (EXPECTED(Z_PROPERTY_GUARD_P(zv) == 0)) {
575-
zend_string_release_ex(Z_STR_P(zv), 0);
575+
zval_ptr_dtor_str(zv);
576576
ZVAL_STR_COPY(zv, member);
577577
return &Z_PROPERTY_GUARD_P(zv);
578578
} else {
@@ -581,7 +581,7 @@ ZEND_API uint32_t *zend_get_property_guard(zend_object *zobj, zend_string *membe
581581
/* mark pointer as "special" using low bit */
582582
zend_hash_add_new_ptr(guards, str,
583583
(void*)(((zend_uintptr_t)&Z_PROPERTY_GUARD_P(zv)) | 1));
584-
zend_string_release_ex(Z_STR_P(zv), 0);
584+
zval_ptr_dtor_str(zv);
585585
ZVAL_ARR(zv, guards);
586586
}
587587
} else if (EXPECTED(Z_TYPE_P(zv) == IS_ARRAY)) {

Zend/zend_objects.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ ZEND_API void zend_object_std_dtor(zend_object *object)
6060
}
6161
if (UNEXPECTED(object->ce->ce_flags & ZEND_ACC_USE_GUARDS)) {
6262
if (EXPECTED(Z_TYPE_P(p) == IS_STRING)) {
63-
zend_string_release_ex(Z_STR_P(p), 0);
63+
zval_ptr_dtor_str(p);
6464
} else if (Z_TYPE_P(p) == IS_ARRAY) {
6565
HashTable *guards;
6666

Zend/zend_operators.c

+12-12
Original file line numberDiff line numberDiff line change
@@ -1455,7 +1455,7 @@ ZEND_API int ZEND_FASTCALL bitwise_or_function(zval *result, zval *op1, zval *op
14551455
if (EXPECTED(Z_STRLEN_P(op1) == Z_STRLEN_P(op2)) && Z_STRLEN_P(op1) == 1) {
14561456
zend_uchar or = (zend_uchar) (*Z_STRVAL_P(op1) | *Z_STRVAL_P(op2));
14571457
if (result==op1) {
1458-
zend_string_release_ex(Z_STR_P(result), 0);
1458+
zval_ptr_dtor_str(result);
14591459
}
14601460
ZVAL_INTERNED_STR(result, ZSTR_CHAR(or));
14611461
return SUCCESS;
@@ -1473,7 +1473,7 @@ ZEND_API int ZEND_FASTCALL bitwise_or_function(zval *result, zval *op1, zval *op
14731473
}
14741474
memcpy(ZSTR_VAL(str) + i, Z_STRVAL_P(longer) + i, Z_STRLEN_P(longer) - i + 1);
14751475
if (result==op1) {
1476-
zend_string_release_ex(Z_STR_P(result), 0);
1476+
zval_ptr_dtor_str(result);
14771477
}
14781478
ZVAL_NEW_STR(result, str);
14791479
return SUCCESS;
@@ -1533,7 +1533,7 @@ ZEND_API int ZEND_FASTCALL bitwise_and_function(zval *result, zval *op1, zval *o
15331533
if (EXPECTED(Z_STRLEN_P(op1) == Z_STRLEN_P(op2)) && Z_STRLEN_P(op1) == 1) {
15341534
zend_uchar and = (zend_uchar) (*Z_STRVAL_P(op1) & *Z_STRVAL_P(op2));
15351535
if (result==op1) {
1536-
zend_string_release_ex(Z_STR_P(result), 0);
1536+
zval_ptr_dtor_str(result);
15371537
}
15381538
ZVAL_INTERNED_STR(result, ZSTR_CHAR(and));
15391539
return SUCCESS;
@@ -1551,7 +1551,7 @@ ZEND_API int ZEND_FASTCALL bitwise_and_function(zval *result, zval *op1, zval *o
15511551
}
15521552
ZSTR_VAL(str)[i] = 0;
15531553
if (result==op1) {
1554-
zend_string_release_ex(Z_STR_P(result), 0);
1554+
zval_ptr_dtor_str(result);
15551555
}
15561556
ZVAL_NEW_STR(result, str);
15571557
return SUCCESS;
@@ -1611,7 +1611,7 @@ ZEND_API int ZEND_FASTCALL bitwise_xor_function(zval *result, zval *op1, zval *o
16111611
if (EXPECTED(Z_STRLEN_P(op1) == Z_STRLEN_P(op2)) && Z_STRLEN_P(op1) == 1) {
16121612
zend_uchar xor = (zend_uchar) (*Z_STRVAL_P(op1) ^ *Z_STRVAL_P(op2));
16131613
if (result==op1) {
1614-
zend_string_release_ex(Z_STR_P(result), 0);
1614+
zval_ptr_dtor_str(result);
16151615
}
16161616
ZVAL_INTERNED_STR(result, ZSTR_CHAR(xor));
16171617
return SUCCESS;
@@ -1629,7 +1629,7 @@ ZEND_API int ZEND_FASTCALL bitwise_xor_function(zval *result, zval *op1, zval *o
16291629
}
16301630
ZSTR_VAL(str)[i] = 0;
16311631
if (result==op1) {
1632-
zend_string_release_ex(Z_STR_P(result), 0);
1632+
zval_ptr_dtor_str(result);
16331633
}
16341634
ZVAL_NEW_STR(result, str);
16351635
return SUCCESS;
@@ -2332,7 +2332,7 @@ static void ZEND_FASTCALL increment_string(zval *str) /* {{{ */
23322332
int ch;
23332333

23342334
if (Z_STRLEN_P(str) == 0) {
2335-
zend_string_release_ex(Z_STR_P(str), 0);
2335+
zval_ptr_dtor_str(str);
23362336
ZVAL_INTERNED_STR(str, ZSTR_CHAR('1'));
23372337
return;
23382338
}
@@ -2426,7 +2426,7 @@ ZEND_API int ZEND_FASTCALL increment_function(zval *op1) /* {{{ */
24262426

24272427
switch (is_numeric_string(Z_STRVAL_P(op1), Z_STRLEN_P(op1), &lval, &dval, 0)) {
24282428
case IS_LONG:
2429-
zend_string_release_ex(Z_STR_P(op1), 0);
2429+
zval_ptr_dtor_str(op1);
24302430
if (lval == ZEND_LONG_MAX) {
24312431
/* switch to double */
24322432
double d = (double)lval;
@@ -2436,7 +2436,7 @@ ZEND_API int ZEND_FASTCALL increment_function(zval *op1) /* {{{ */
24362436
}
24372437
break;
24382438
case IS_DOUBLE:
2439-
zend_string_release_ex(Z_STR_P(op1), 0);
2439+
zval_ptr_dtor_str(op1);
24402440
ZVAL_DOUBLE(op1, dval+1);
24412441
break;
24422442
default:
@@ -2493,13 +2493,13 @@ ZEND_API int ZEND_FASTCALL decrement_function(zval *op1) /* {{{ */
24932493
break;
24942494
case IS_STRING: /* Like perl we only support string increment */
24952495
if (Z_STRLEN_P(op1) == 0) { /* consider as 0 */
2496-
zend_string_release_ex(Z_STR_P(op1), 0);
2496+
zval_ptr_dtor_str(op1);
24972497
ZVAL_LONG(op1, -1);
24982498
break;
24992499
}
25002500
switch (is_numeric_string(Z_STRVAL_P(op1), Z_STRLEN_P(op1), &lval, &dval, 0)) {
25012501
case IS_LONG:
2502-
zend_string_release_ex(Z_STR_P(op1), 0);
2502+
zval_ptr_dtor_str(op1);
25032503
if (lval == ZEND_LONG_MIN) {
25042504
double d = (double)lval;
25052505
ZVAL_DOUBLE(op1, d-1);
@@ -2508,7 +2508,7 @@ ZEND_API int ZEND_FASTCALL decrement_function(zval *op1) /* {{{ */
25082508
}
25092509
break;
25102510
case IS_DOUBLE:
2511-
zend_string_release_ex(Z_STR_P(op1), 0);
2511+
zval_ptr_dtor_str(op1);
25122512
ZVAL_DOUBLE(op1, dval - 1);
25132513
break;
25142514
}

Zend/zend_vm_def.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -4525,7 +4525,7 @@ ZEND_VM_C_LABEL(send_again):
45254525
ZEND_ASSERT(Z_TYPE(key) == IS_STRING);
45264526
zend_throw_error(NULL,
45274527
"Cannot unpack Traversable with string keys");
4528-
zend_string_release_ex(Z_STR(key), 0);
4528+
zval_ptr_dtor_str(&key);
45294529
break;
45304530
}
45314531
}

Zend/zend_vm_execute.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -1362,7 +1362,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_UNPACK_SPEC_HANDLER(ZEND_
13621362
ZEND_ASSERT(Z_TYPE(key) == IS_STRING);
13631363
zend_throw_error(NULL,
13641364
"Cannot unpack Traversable with string keys");
1365-
zend_string_release_ex(Z_STR(key), 0);
1365+
zval_ptr_dtor_str(&key);
13661366
break;
13671367
}
13681368
}

ext/opcache/Optimizer/block_pass.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -704,7 +704,7 @@ static void zend_optimize_block(zend_basic_block *block, zend_op_array *op_array
704704
Z_TYPE_INFO(ZEND_OP2_LITERAL(src)) = IS_STRING_EX;
705705
memcpy(Z_STRVAL(ZEND_OP2_LITERAL(src)) + old_len, Z_STRVAL(ZEND_OP2_LITERAL(opline)), Z_STRLEN(ZEND_OP2_LITERAL(opline)));
706706
Z_STRVAL(ZEND_OP2_LITERAL(src))[l] = '\0';
707-
zend_string_release_ex(Z_STR(ZEND_OP2_LITERAL(opline)), 0);
707+
zval_ptr_dtor_str(&ZEND_OP2_LITERAL(opline));
708708
ZVAL_STR(&ZEND_OP2_LITERAL(opline), zend_new_interned_string(Z_STR(ZEND_OP2_LITERAL(src))));
709709
ZVAL_NULL(&ZEND_OP2_LITERAL(src));
710710
MAKE_NOP(src);

ext/session/session.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -1446,15 +1446,15 @@ PHPAPI int php_session_reset_id(void) /* {{{ */
14461446
smart_str_appends(&var, ZSTR_VAL(PS(id)));
14471447
smart_str_0(&var);
14481448
if (sid) {
1449-
zend_string_release_ex(Z_STR_P(sid), 0);
1449+
zval_ptr_dtor_str(sid);
14501450
ZVAL_NEW_STR(sid, var.s);
14511451
} else {
14521452
REGISTER_STRINGL_CONSTANT("SID", ZSTR_VAL(var.s), ZSTR_LEN(var.s), 0);
14531453
smart_str_free(&var);
14541454
}
14551455
} else {
14561456
if (sid) {
1457-
zend_string_release_ex(Z_STR_P(sid), 0);
1457+
zval_ptr_dtor_str(sid);
14581458
ZVAL_EMPTY_STRING(sid);
14591459
} else {
14601460
REGISTER_STRINGL_CONSTANT("SID", "", 0, 0);

ext/standard/array.c

+12-12
Original file line numberDiff line numberDiff line change
@@ -1947,7 +1947,7 @@ static zend_long php_extract_ref_prefix_if_exists(zend_array *arr, zend_array *s
19471947
count++;
19481948
}
19491949
}
1950-
zend_string_release_ex(Z_STR(final_name), 0);
1950+
zval_ptr_dtor_str(&final_name);
19511951
}
19521952
} ZEND_HASH_FOREACH_END();
19531953

@@ -1997,7 +1997,7 @@ static zend_long php_extract_prefix_if_exists(zend_array *arr, zend_array *symbo
19971997
count++;
19981998
}
19991999
}
2000-
zend_string_release_ex(Z_STR(final_name), 0);
2000+
zval_ptr_dtor_str(&final_name);
20012001
}
20022002
} ZEND_HASH_FOREACH_END();
20032003

@@ -2056,7 +2056,7 @@ static zend_long php_extract_ref_prefix_same(zend_array *arr, zend_array *symbol
20562056
count++;
20572057
}
20582058
}
2059-
zend_string_release_ex(Z_STR(final_name), 0);
2059+
zval_ptr_dtor_str(&final_name);
20602060
} else {
20612061
if (!php_valid_var_name(ZSTR_VAL(var_name), ZSTR_LEN(var_name))) {
20622062
continue;
@@ -2124,7 +2124,7 @@ static zend_long php_extract_prefix_same(zend_array *arr, zend_array *symbol_tab
21242124
count++;
21252125
}
21262126
}
2127-
zend_string_release_ex(Z_STR(final_name), 0);
2127+
zval_ptr_dtor_str(&final_name);
21282128
} else {
21292129
if (!php_valid_var_name(ZSTR_VAL(var_name), ZSTR_LEN(var_name))) {
21302130
continue;
@@ -2184,7 +2184,7 @@ static zend_long php_extract_ref_prefix_all(zend_array *arr, zend_array *symbol_
21842184
count++;
21852185
}
21862186
}
2187-
zend_string_release_ex(Z_STR(final_name), 0);
2187+
zval_ptr_dtor_str(&final_name);
21882188
} ZEND_HASH_FOREACH_END();
21892189

21902190
return count;
@@ -2229,7 +2229,7 @@ static zend_long php_extract_prefix_all(zend_array *arr, zend_array *symbol_tabl
22292229
count++;
22302230
}
22312231
}
2232-
zend_string_release_ex(Z_STR(final_name), 0);
2232+
zval_ptr_dtor_str(&final_name);
22332233
} ZEND_HASH_FOREACH_END();
22342234

22352235
return count;
@@ -2248,7 +2248,7 @@ static zend_long php_extract_ref_prefix_invalid(zend_array *arr, zend_array *sym
22482248
if (!php_valid_var_name(ZSTR_VAL(var_name), ZSTR_LEN(var_name))) {
22492249
php_prefix_varname(&final_name, prefix, ZSTR_VAL(var_name), ZSTR_LEN(var_name), 1);
22502250
if (!php_valid_var_name(Z_STRVAL(final_name), Z_STRLEN(final_name))) {
2251-
zend_string_release_ex(Z_STR(final_name), 0);
2251+
zval_ptr_dtor_str(&final_name);
22522252
continue;
22532253
}
22542254
} else {
@@ -2259,7 +2259,7 @@ static zend_long php_extract_ref_prefix_invalid(zend_array *arr, zend_array *sym
22592259
php_prefix_varname(&final_name, prefix, ZSTR_VAL(str), ZSTR_LEN(str), 1);
22602260
zend_string_release_ex(str, 0);
22612261
if (!php_valid_var_name(Z_STRVAL(final_name), Z_STRLEN(final_name))) {
2262-
zend_string_release_ex(Z_STR(final_name), 0);
2262+
zval_ptr_dtor_str(&final_name);
22632263
continue;
22642264
}
22652265
}
@@ -2283,7 +2283,7 @@ static zend_long php_extract_ref_prefix_invalid(zend_array *arr, zend_array *sym
22832283
}
22842284
count++;
22852285
}
2286-
zend_string_release_ex(Z_STR(final_name), 0);
2286+
zval_ptr_dtor_str(&final_name);
22872287
} ZEND_HASH_FOREACH_END();
22882288

22892289
return count;
@@ -2302,7 +2302,7 @@ static zend_long php_extract_prefix_invalid(zend_array *arr, zend_array *symbol_
23022302
if (!php_valid_var_name(ZSTR_VAL(var_name), ZSTR_LEN(var_name))) {
23032303
php_prefix_varname(&final_name, prefix, ZSTR_VAL(var_name), ZSTR_LEN(var_name), 1);
23042304
if (!php_valid_var_name(Z_STRVAL(final_name), Z_STRLEN(final_name))) {
2305-
zend_string_release_ex(Z_STR(final_name), 0);
2305+
zval_ptr_dtor_str(&final_name);
23062306
continue;
23072307
}
23082308
} else {
@@ -2313,7 +2313,7 @@ static zend_long php_extract_prefix_invalid(zend_array *arr, zend_array *symbol_
23132313
php_prefix_varname(&final_name, prefix, ZSTR_VAL(str), ZSTR_LEN(str), 1);
23142314
zend_string_release_ex(str, 0);
23152315
if (!php_valid_var_name(Z_STRVAL(final_name), Z_STRLEN(final_name))) {
2316-
zend_string_release_ex(Z_STR(final_name), 0);
2316+
zval_ptr_dtor_str(&final_name);
23172317
continue;
23182318
}
23192319
}
@@ -2335,7 +2335,7 @@ static zend_long php_extract_prefix_invalid(zend_array *arr, zend_array *symbol_
23352335
}
23362336
count++;
23372337
}
2338-
zend_string_release_ex(Z_STR(final_name), 0);
2338+
zval_ptr_dtor_str(&final_name);
23392339
} ZEND_HASH_FOREACH_END();
23402340

23412341
return count;

ext/standard/var_unserializer.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -477,7 +477,7 @@ static zend_always_inline int process_nested_data(UNSERIALIZE_PARAMETER, HashTab
477477
ZEND_ASSERT(existing_propinfo->flags & ZEND_ACC_PUBLIC);
478478
new_key = unmangled;
479479
}
480-
zend_string_release_ex(Z_STR(key), 0);
480+
zval_ptr_dtor_str(&key);
481481
ZVAL_STR(&key, new_key);
482482
} else {
483483
zend_string_release_ex(unmangled, 0);

ext/standard/var_unserializer.re

+1-1
Original file line numberDiff line numberDiff line change
@@ -481,7 +481,7 @@ string_key:
481481
ZEND_ASSERT(existing_propinfo->flags & ZEND_ACC_PUBLIC);
482482
new_key = unmangled;
483483
}
484-
zend_string_release_ex(Z_STR(key), 0);
484+
zval_ptr_dtor_str(&key);
485485
ZVAL_STR(&key, new_key);
486486
} else {
487487
zend_string_release_ex(unmangled, 0);

0 commit comments

Comments
 (0)