File tree 2 files changed +50
-1
lines changed
2 files changed +50
-1
lines changed Original file line number Diff line number Diff line change @@ -636,7 +636,7 @@ static inline HashTable *spl_filesystem_object_get_debug_info(zend_object *objec
636
636
}
637
637
if (intern -> type == SPL_FS_DIR ) {
638
638
#ifdef HAVE_GLOB
639
- if (php_stream_is (intern -> u .dir .dirp , & php_glob_stream_ops )) {
639
+ if (intern -> u . dir . dirp && php_stream_is (intern -> u .dir .dirp , & php_glob_stream_ops )) {
640
640
ZVAL_STR_COPY (& tmp , intern -> path );
641
641
} else {
642
642
ZVAL_FALSE (& tmp );
Original file line number Diff line number Diff line change
1
+ --TEST--
2
+ GH-14687 segfault on debugging SplObjectStorage instance after __destruct.
3
+ --CREDITS--
4
+ YuanchengJiang
5
+ --EXTENSIONS--
6
+ phar
7
+ --INI--
8
+ phar.require_hash=0
9
+ phar.readonly=0
10
+ --FILE--
11
+ <?php
12
+ $ fname = __DIR__ . '/gh14687.phar.zip ' ;
13
+ $ phar = new Phar ($ fname );
14
+ class HasDestructor {
15
+ public function __destruct () {
16
+ var_dump ($ GLOBALS ['s ' ]);
17
+ }
18
+ }
19
+ $ s = new SplObjectStorage ();
20
+ $ s [$ phar ] = new HasDestructor ();
21
+ register_shutdown_function (function () {
22
+ global $ s ;
23
+ });
24
+ ?>
25
+ --CLEAN--
26
+ <?php
27
+ @unlink (__DIR__ . '/gh14687.phar.zip ' );
28
+ ?>
29
+ --EXPECT--
30
+ object(SplObjectStorage)#2 (1) {
31
+ ["storage":"SplObjectStorage":private]=>
32
+ array(1) {
33
+ [0]=>
34
+ array(2) {
35
+ ["obj"]=>
36
+ object(Phar)#1 (3) {
37
+ ["pathName":"SplFileInfo":private]=>
38
+ string(0) ""
39
+ ["glob":"DirectoryIterator":private]=>
40
+ bool(false)
41
+ ["subPathName":"RecursiveDirectoryIterator":private]=>
42
+ string(0) ""
43
+ }
44
+ ["inf"]=>
45
+ object(HasDestructor)#3 (0) {
46
+ }
47
+ }
48
+ }
49
+ }
You can’t perform that action at this time.
0 commit comments