From: Xinchen Hui Date: Wed, 21 May 2014 05:11:56 +0000 (+0800) Subject: Fixed segafult while stream is referenced by persistent resource (like dba) X-Git-Tag: POST_PHPNG_MERGE~311 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=59d74db108a458d08792c59f8e92677ce8c41423;p=php Fixed segafult while stream is referenced by persistent resource (like dba) --- diff --git a/main/streams/streams.c b/main/streams/streams.c index c754bdc58c..3ed457365a 100644 --- a/main/streams/streams.c +++ b/main/streams/streams.c @@ -457,7 +457,7 @@ fprintf(stderr, "stream_free: %s:%p[%s] preserve_handle=%d release_cast=%d remov _php_stream_flush(stream, 1 TSRMLS_CC); /* If not called from the resource dtor, remove the stream from the resource list. */ - if ((close_options & PHP_STREAM_FREE_RSRC_DTOR) == 0) { + if ((close_options & PHP_STREAM_FREE_RSRC_DTOR) == 0 && stream->res) { /* zend_list_delete actually only decreases the refcount; if we're * releasing the stream, we want to actually delete the resource from * the resource list, otherwise the resource will point to invalid memory.