diff options
Diffstat (limited to 'sapi/phpdbg/phpdbg.c')
-rw-r--r-- | sapi/phpdbg/phpdbg.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/sapi/phpdbg/phpdbg.c b/sapi/phpdbg/phpdbg.c index f47951bb16..7c465618be 100644 --- a/sapi/phpdbg/phpdbg.c +++ b/sapi/phpdbg/phpdbg.c @@ -1356,7 +1356,7 @@ php_stream *phpdbg_stream_url_wrap_php(php_stream_wrapper *wrapper, const char * return stream; } - return PHPDBG_G(orig_url_wrap_php)(wrapper, path, mode, options, opened_path, context STREAMS_CC); + return PHPDBG_G(orig_url_wrap_php)->stream_opener(wrapper, path, mode, options, opened_path, context STREAMS_CC); } /* }}} */ int main(int argc, char **argv) /* {{{ */ @@ -1399,6 +1399,7 @@ int main(int argc, char **argv) /* {{{ */ void* (*_malloc)(size_t); void (*_free)(void*); void* (*_realloc)(void*, size_t); + php_stream_wrapper_ops wops; #ifndef _WIN32 @@ -1868,8 +1869,10 @@ phpdbg_main: { php_stream_wrapper *wrapper = zend_hash_str_find_ptr(php_stream_get_url_stream_wrappers_hash(), ZEND_STRL("php")); - PHPDBG_G(orig_url_wrap_php) = wrapper->wops->stream_opener; - wrapper->wops->stream_opener = phpdbg_stream_url_wrap_php; + PHPDBG_G(orig_url_wrap_php) = wrapper->wops; + memcpy(&wops, wrapper->wops, sizeof(wops)); + wops.stream_opener = phpdbg_stream_url_wrap_php; + wrapper->wops = &wops; } /* Make stdin, stdout and stderr accessible from PHP scripts */ @@ -2149,7 +2152,7 @@ phpdbg_out: { php_stream_wrapper *wrapper = zend_hash_str_find_ptr(php_stream_get_url_stream_wrappers_hash(), ZEND_STRL("php")); - wrapper->wops->stream_opener = PHPDBG_G(orig_url_wrap_php); + wrapper->wops = PHPDBG_G(orig_url_wrap_php); } zend_hash_destroy(&PHPDBG_G(file_sources)); |