Skip to content

Commit f40b356

Browse files
authored
Use smart_str_append() if we have a zend_string* (php#21414)
1 parent 4d52853 commit f40b356

File tree

16 files changed

+90
-79
lines changed

16 files changed

+90
-79
lines changed

Zend/zend.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -565,6 +565,7 @@ static void zend_print_zval_r_to_buf(smart_str *buf, zval *expr, int indent) /*
565565
zend_object *zobj = Z_OBJ_P(expr);
566566
uint32_t *guard = zend_get_recursion_guard(zobj);
567567
zend_string *class_name = Z_OBJ_HANDLER_P(expr, get_class_name)(zobj);
568+
/* cut off on NULL byte ... class@anonymous */
568569
smart_str_appends(buf, ZSTR_VAL(class_name));
569570
zend_string_release_ex(class_name, 0);
570571

Zend/zend_ast.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2160,7 +2160,7 @@ static ZEND_COLD void zend_ast_export_ex(smart_str *str, zend_ast *ast, int prio
21602160
break;
21612161
case ZEND_AST_CONSTANT: {
21622162
zend_string *name = zend_ast_get_constant_name(ast);
2163-
smart_str_appendl(str, ZSTR_VAL(name), ZSTR_LEN(name));
2163+
smart_str_append(str, name);
21642164
break;
21652165
}
21662166
case ZEND_AST_OP_ARRAY:
@@ -2210,7 +2210,7 @@ static ZEND_COLD void zend_ast_export_ex(smart_str *str, zend_ast *ast, int prio
22102210
smart_str_appendc(str, '&');
22112211
}
22122212
if (ast->kind != ZEND_AST_CLOSURE && ast->kind != ZEND_AST_ARROW_FUNC) {
2213-
smart_str_appendl(str, ZSTR_VAL(decl->name), ZSTR_LEN(decl->name));
2213+
smart_str_append(str, decl->name);
22142214
}
22152215
smart_str_appendc(str, '(');
22162216
zend_ast_export_ex(str, decl->child[0], 0, indent);
@@ -2268,7 +2268,7 @@ static ZEND_COLD void zend_ast_export_ex(smart_str *str, zend_ast *ast, int prio
22682268
}
22692269
smart_str_appends(str, "class ");
22702270
}
2271-
smart_str_appendl(str, ZSTR_VAL(decl->name), ZSTR_LEN(decl->name));
2271+
smart_str_append(str, decl->name);
22722272
if (decl->flags & ZEND_ACC_ENUM && decl->child[4]) {
22732273
smart_str_appends(str, ": ");
22742274
zend_ast_export_type(str, decl->child[4], indent);

Zend/zend_exceptions.c

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -497,12 +497,12 @@ ZEND_METHOD(ErrorException, getSeverity)
497497
#define TRACE_APPEND_KEY(key) do { \
498498
tmp = zend_hash_find(ht, key); \
499499
if (tmp) { \
500-
if (Z_TYPE_P(tmp) != IS_STRING) { \
500+
if (UNEXPECTED(Z_TYPE_P(tmp) != IS_STRING)) { \
501501
zend_error(E_WARNING, "Value for %s is not a string", \
502502
ZSTR_VAL(key)); \
503503
smart_str_appends(str, "[unknown]"); \
504504
} else { \
505-
smart_str_appends(str, Z_STRVAL_P(tmp)); \
505+
smart_str_append(str, Z_STR_P(tmp)); \
506506
} \
507507
} \
508508
} while (0)
@@ -532,6 +532,7 @@ static void _build_trace_args(zval *arg, smart_str *str) /* {{{ */
532532
case IS_OBJECT: {
533533
zend_string *class_name = Z_OBJ_HANDLER_P(arg, get_class_name)(Z_OBJ_P(arg));
534534
smart_str_appends(str, "Object(");
535+
/* cut off on NULL byte ... class@anonymous */
535536
smart_str_appends(str, ZSTR_VAL(class_name));
536537
smart_str_appends(str, "), ");
537538
zend_string_release_ex(class_name, 0);
@@ -573,7 +574,16 @@ static void _build_trace_string(smart_str *str, const HashTable *ht, uint32_t nu
573574
} else {
574575
smart_str_appends(str, "[internal function]: ");
575576
}
576-
TRACE_APPEND_KEY(ZSTR_KNOWN(ZEND_STR_CLASS));
577+
const zval *class_name = zend_hash_find(ht, ZSTR_KNOWN(ZEND_STR_CLASS));
578+
if (class_name) {
579+
if (UNEXPECTED(Z_TYPE_P(class_name) != IS_STRING)) {
580+
zend_error(E_WARNING, "Value for class is not a string");
581+
smart_str_appends(str, "[unknown]");
582+
} else {
583+
/* cut off on NULL byte ... class@anonymous */
584+
smart_str_appends(str, Z_STRVAL_P(class_name));
585+
}
586+
}
577587
TRACE_APPEND_KEY(ZSTR_KNOWN(ZEND_STR_TYPE));
578588
TRACE_APPEND_KEY(ZSTR_KNOWN(ZEND_STR_FUNCTION));
579589
smart_str_appendc(str, '(');

Zend/zend_inheritance.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -924,7 +924,7 @@ static ZEND_COLD zend_string *zend_get_function_declaration(
924924
/* cut off on NULL byte ... class@anonymous */
925925
smart_str_appends(&str, ZSTR_VAL(fptr->common.scope->name));
926926
} else {
927-
smart_str_appendl(&str, ZSTR_VAL(fptr->common.scope->name), ZSTR_LEN(fptr->common.scope->name));
927+
smart_str_append(&str, fptr->common.scope->name);
928928
}
929929
smart_str_appends(&str, "::");
930930
}

ext/iconv/iconv.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1073,7 +1073,7 @@ static php_iconv_err_t _php_iconv_mime_encode(smart_str *pretval, const char *fn
10731073
goto out;
10741074
}
10751075

1076-
smart_str_appendl(pretval, ZSTR_VAL(encoded), ZSTR_LEN(encoded));
1076+
smart_str_append(pretval, encoded);
10771077
char_cnt -= ZSTR_LEN(encoded);
10781078
smart_str_appendl(pretval, "?=", sizeof("?=") - 1);
10791079
char_cnt -= 2;

ext/intl/locale/locale_methods.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -815,7 +815,7 @@ static int append_key_value(smart_str* loc_name, HashTable* hash_arr, const char
815815
/* not lang or grandfathered tag */
816816
smart_str_appendl(loc_name, SEPARATOR , sizeof(SEPARATOR)-1);
817817
}
818-
smart_str_appendl(loc_name, Z_STRVAL_P(ele_value) , Z_STRLEN_P(ele_value));
818+
smart_str_append(loc_name, Z_STR_P(ele_value));
819819
return SUCCESS;
820820
}
821821

@@ -853,7 +853,7 @@ static int append_multiple_key_values(smart_str* loc_name, HashTable* hash_arr,
853853
add_prefix( loc_name , key_name);
854854

855855
smart_str_appendl(loc_name, SEPARATOR , sizeof(SEPARATOR)-1);
856-
smart_str_appendl(loc_name, Z_STRVAL_P(ele_value) , Z_STRLEN_P(ele_value));
856+
smart_str_append(loc_name, Z_STR_P(ele_value));
857857
return SUCCESS;
858858
} else if(Z_TYPE_P(ele_value) == IS_ARRAY ) {
859859
HashTable *arr = Z_ARRVAL_P(ele_value);
@@ -868,7 +868,7 @@ static int append_multiple_key_values(smart_str* loc_name, HashTable* hash_arr,
868868
add_prefix(loc_name , key_name);
869869
}
870870
smart_str_appendl(loc_name, SEPARATOR , sizeof(SEPARATOR)-1);
871-
smart_str_appendl(loc_name, Z_STRVAL_P(data) , Z_STRLEN_P(data));
871+
smart_str_append(loc_name, Z_STR_P(data));
872872
} ZEND_HASH_FOREACH_END();
873873
return SUCCESS;
874874
} else {
@@ -902,7 +902,7 @@ static int append_multiple_key_values(smart_str* loc_name, HashTable* hash_arr,
902902
add_prefix(loc_name , cur_key_name);
903903
}
904904
smart_str_appendl(loc_name, SEPARATOR , sizeof(SEPARATOR)-1);
905-
smart_str_appendl(loc_name, Z_STRVAL_P(ele_value) , Z_STRLEN_P(ele_value));
905+
smart_str_append(loc_name, Z_STR_P(ele_value));
906906
}
907907
} /* end of for */
908908
} /* end of else */

ext/mbstring/php_mbregex.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1103,7 +1103,7 @@ static void _php_mb_regex_ereg_replace_exec(INTERNAL_FUNCTION_PARAMETERS, OnigOp
11031103
if (zend_call_function(&arg_replace_fci, &arg_replace_fci_cache) == SUCCESS &&
11041104
!Z_ISUNDEF(retval)) {
11051105
convert_to_string(&retval);
1106-
smart_str_appendl(&out_buf, Z_STRVAL(retval), Z_STRLEN(retval));
1106+
smart_str_append(&out_buf, Z_STR(retval));
11071107
smart_str_free(&eval_buf);
11081108
zval_ptr_dtor(&retval);
11091109
}

ext/opcache/jit/zend_jit.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -880,21 +880,21 @@ static zend_string *zend_jit_func_name(const zend_op_array *op_array)
880880
if (op_array->function_name) {
881881
smart_str_appends(&buf, JIT_PREFIX);
882882
if (op_array->scope) {
883-
smart_str_appendl(&buf, ZSTR_VAL(op_array->scope->name), ZSTR_LEN(op_array->scope->name));
883+
smart_str_append(&buf, op_array->scope->name);
884884
smart_str_appends(&buf, "::");
885885
}
886-
smart_str_appendl(&buf, ZSTR_VAL(op_array->function_name), ZSTR_LEN(op_array->function_name));
886+
smart_str_append(&buf, op_array->function_name);
887887
if (op_array->fn_flags & ZEND_ACC_CLOSURE) {
888888
smart_str_appends(&buf, ":");
889-
smart_str_appendl(&buf, ZSTR_VAL(op_array->filename), ZSTR_LEN(op_array->filename));
889+
smart_str_append(&buf, op_array->filename);
890890
smart_str_appends(&buf, ":");
891891
smart_str_append_long(&buf, op_array->line_start);
892892
}
893893
smart_str_0(&buf);
894894
return buf.s;
895895
} else if (op_array->filename) {
896896
smart_str_appends(&buf, JIT_PREFIX);
897-
smart_str_appendl(&buf, ZSTR_VAL(op_array->filename), ZSTR_LEN(op_array->filename));
897+
smart_str_append(&buf, op_array->filename);
898898
smart_str_0(&buf);
899899
return buf.s;
900900
} else {

ext/opcache/jit/zend_jit_trace.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -258,14 +258,14 @@ static zend_string *zend_jit_trace_name(const zend_op_array *op_array, uint32_t
258258
smart_str_appendc(&buf, '$');
259259
if (op_array->function_name) {
260260
if (op_array->scope) {
261-
smart_str_appendl(&buf, ZSTR_VAL(op_array->scope->name), ZSTR_LEN(op_array->scope->name));
261+
smart_str_append(&buf, op_array->scope->name);
262262
smart_str_appends(&buf, "::");
263-
smart_str_appendl(&buf, ZSTR_VAL(op_array->function_name), ZSTR_LEN(op_array->function_name));
263+
smart_str_append(&buf, op_array->function_name);
264264
} else {
265-
smart_str_appendl(&buf, ZSTR_VAL(op_array->function_name), ZSTR_LEN(op_array->function_name));
265+
smart_str_append(&buf, op_array->function_name);
266266
}
267267
} else if (op_array->filename) {
268-
smart_str_appendl(&buf, ZSTR_VAL(op_array->filename), ZSTR_LEN(op_array->filename));
268+
smart_str_append(&buf, op_array->filename);
269269
}
270270
smart_str_appendc(&buf, '$');
271271
smart_str_append_long(&buf, (zend_long)lineno);

ext/phar/phar.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2606,7 +2606,7 @@ ZEND_ATTRIBUTE_NONNULL_ARGS(1, 4) int phar_flush_ex(phar_archive_data *phar, zen
26062606
/* compress as necessary, calculate crcs, serialize meta-data, manifest size, and file sizes */
26072607
main_metadata_str.s = NULL;
26082608
if (phar->metadata_tracker.str) {
2609-
smart_str_appendl(&main_metadata_str, ZSTR_VAL(phar->metadata_tracker.str), ZSTR_LEN(phar->metadata_tracker.str));
2609+
smart_str_append(&main_metadata_str, phar->metadata_tracker.str);
26102610
} else if (!Z_ISUNDEF(phar->metadata_tracker.val)) {
26112611
PHP_VAR_SERIALIZE_INIT(metadata_hash);
26122612
php_var_serialize(&main_metadata_str, &phar->metadata_tracker.val, &metadata_hash);

0 commit comments

Comments
 (0)