Skip to content

Commit 4eb9e93

Browse files
committed
Merge branch 'PHP-7.3' into PHP-7.4
2 parents f7abb1e + 82fbaab commit 4eb9e93

File tree

2 files changed

+24
-7
lines changed

2 files changed

+24
-7
lines changed

ext/spl/spl_directory.c

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ static void spl_filesystem_object_destroy_object(zend_object *object) /* {{{ */
9595
} else {
9696
php_stream_pclose(intern->u.file.stream);
9797
}
98+
intern->u.file.stream = NULL;
9899
}
99100
break;
100101
default:
@@ -127,13 +128,11 @@ static void spl_filesystem_object_free_storage(zend_object *object) /* {{{ */
127128
}
128129
break;
129130
case SPL_FS_FILE:
130-
if (intern->u.file.stream) {
131-
if (intern->u.file.open_mode) {
132-
efree(intern->u.file.open_mode);
133-
}
134-
if (intern->orig_path) {
135-
efree(intern->orig_path);
136-
}
131+
if (intern->u.file.open_mode) {
132+
efree(intern->u.file.open_mode);
133+
}
134+
if (intern->orig_path) {
135+
efree(intern->orig_path);
137136
}
138137
spl_filesystem_file_free_line(intern);
139138
break;

ext/spl/tests/bug77751.phpt

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
--TEST--
2+
Bug #77751: Writing to SplFileObject in ob_start gives segfault
3+
--FILE--
4+
<?php
5+
6+
echo "No crash.\n";
7+
8+
$logfile = new SplTempFileObject();
9+
ob_start(function ($buffer) use ($logfile) {
10+
$logfile->fwrite($buffer);
11+
$logfile->fflush();
12+
return "";
13+
});
14+
echo "hmm\n";
15+
16+
?>
17+
--EXPECT--
18+
No crash.

0 commit comments

Comments
 (0)