Skip to content

Commit bb97c94

Browse files
committed
Slightly clarify current_zval handling in spl_directory
This used COPY_DEREF in some places where references can't occur.
1 parent 65b9639 commit bb97c94

File tree

1 file changed

+4
-10
lines changed

1 file changed

+4
-10
lines changed

ext/spl/spl_directory.c

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1901,7 +1901,6 @@ static int spl_filesystem_file_read(spl_filesystem_object *intern, int silent) /
19011901
static int spl_filesystem_file_read_csv(spl_filesystem_object *intern, char delimiter, char enclosure, int escape, zval *return_value) /* {{{ */
19021902
{
19031903
int ret = SUCCESS;
1904-
zval *value;
19051904

19061905
do {
19071906
ret = spl_filesystem_file_read(intern, 1);
@@ -1918,8 +1917,7 @@ static int spl_filesystem_file_read_csv(spl_filesystem_object *intern, char deli
19181917

19191918
php_fgetcsv(intern->u.file.stream, delimiter, enclosure, escape, buf_len, buf, &intern->u.file.current_zval);
19201919
if (return_value) {
1921-
value = &intern->u.file.current_zval;
1922-
ZVAL_COPY_DEREF(return_value, value);
1920+
ZVAL_COPY(return_value, &intern->u.file.current_zval);
19231921
}
19241922
}
19251923
return ret;
@@ -1953,9 +1951,7 @@ static int spl_filesystem_file_read_line_ex(zval * this_ptr, spl_filesystem_obje
19531951
intern->u.file.current_line = estrndup(Z_STRVAL(retval), Z_STRLEN(retval));
19541952
intern->u.file.current_line_len = Z_STRLEN(retval);
19551953
} else {
1956-
zval *value = &retval;
1957-
1958-
ZVAL_COPY_DEREF(&intern->u.file.current_zval, value);
1954+
ZVAL_COPY_DEREF(&intern->u.file.current_zval, &retval);
19591955
}
19601956
zval_ptr_dtor(&retval);
19611957
return SUCCESS;
@@ -2185,10 +2181,8 @@ PHP_METHOD(SplFileObject, current)
21852181
if (intern->u.file.current_line && (!SPL_HAS_FLAG(intern->flags, SPL_FILE_OBJECT_READ_CSV) || Z_ISUNDEF(intern->u.file.current_zval))) {
21862182
RETURN_STRINGL(intern->u.file.current_line, intern->u.file.current_line_len);
21872183
} else if (!Z_ISUNDEF(intern->u.file.current_zval)) {
2188-
zval *value = &intern->u.file.current_zval;
2189-
2190-
ZVAL_COPY_DEREF(return_value, value);
2191-
return;
2184+
ZEND_ASSERT(!Z_ISREF(intern->u.file.current_zval));
2185+
RETURN_COPY(&intern->u.file.current_zval);
21922186
}
21932187
RETURN_FALSE;
21942188
} /* }}} */

0 commit comments

Comments
 (0)