Skip to content

Commit 02614a2

Browse files
arshidkv12TimWolla
andauthored
ext/spl: zend_string_concat3() instead of manual memcpy for sub_path construction (php#21564)
* ext/spl: zend_string_concat3() instead of manual memcpy for sub_path construction * spl: Adjust `zend_string_concat3()` formatting --------- Co-authored-by: Tim Düsterhus <tim@bastelstu.be>
1 parent 78f2d44 commit 02614a2

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

ext/spl/spl_directory.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1470,11 +1470,11 @@ PHP_METHOD(RecursiveDirectoryIterator, getChildren)
14701470
if (subdir) {
14711471
size_t name_len = strlen(intern->u.dir.entry.d_name);
14721472
if (intern->u.dir.sub_path && ZSTR_LEN(intern->u.dir.sub_path)) {
1473-
zend_string *sub_path = zend_string_alloc(ZSTR_LEN(intern->u.dir.sub_path) + 1 + name_len, 0);
1474-
memcpy(ZSTR_VAL(sub_path), ZSTR_VAL(intern->u.dir.sub_path), ZSTR_LEN(intern->u.dir.sub_path));
1475-
ZSTR_VAL(sub_path)[ZSTR_LEN(intern->u.dir.sub_path)] = slash;
1476-
memcpy(ZSTR_VAL(sub_path) + ZSTR_LEN(intern->u.dir.sub_path) + 1, intern->u.dir.entry.d_name, name_len);
1477-
ZSTR_VAL(sub_path)[ZSTR_LEN(intern->u.dir.sub_path) + 1 + name_len] = 0;
1473+
zend_string *sub_path = zend_string_concat3(
1474+
ZSTR_VAL(intern->u.dir.sub_path), ZSTR_LEN(intern->u.dir.sub_path),
1475+
&slash, 1,
1476+
intern->u.dir.entry.d_name, name_len
1477+
);
14781478
subdir->u.dir.sub_path = sub_path;
14791479
} else {
14801480
subdir->u.dir.sub_path = zend_string_init(intern->u.dir.entry.d_name, name_len, 0);

0 commit comments

Comments
 (0)