diff options
author | Gustavo André dos Santos Lopes <cataphract@php.net> | 2011-04-09 18:32:55 +0000 |
---|---|---|
committer | Gustavo André dos Santos Lopes <cataphract@php.net> | 2011-04-09 18:32:55 +0000 |
commit | 09b990f499caa582528689751294500ce310a500 (patch) | |
tree | 0f9aa497ae87aa08dadb771858d64b56009059be | |
parent | db01e840c206b900b46177502c0add92bc9eb928 (diff) | |
download | php-git-09b990f499caa582528689751294500ce310a500.tar.gz |
- Fixed bug #54440: libxml extension ignores default context.
-rw-r--r-- | ext/libxml/libxml.c | 6 | ||||
-rw-r--r-- | ext/libxml/tests/bug54440.phpt | 51 |
2 files changed, 53 insertions, 4 deletions
diff --git a/ext/libxml/libxml.c b/ext/libxml/libxml.c index 5d4d0a5f96..222ff98bf2 100644 --- a/ext/libxml/libxml.c +++ b/ext/libxml/libxml.c @@ -312,10 +312,8 @@ static void *php_libxml_streams_IO_open_wrapper(const char *filename, const char } } - if (LIBXML(stream_context)) { - context = zend_fetch_resource(&LIBXML(stream_context) TSRMLS_CC, -1, "Stream-Context", NULL, 1, php_le_stream_context(TSRMLS_C)); - } - + context = php_stream_context_from_zval(LIBXML(stream_context), 0); + ret_val = php_stream_open_wrapper_ex(path_to_open, (char *)mode, REPORT_ERRORS, NULL, context); if (isescaped) { xmlFree(resolved_path); diff --git a/ext/libxml/tests/bug54440.phpt b/ext/libxml/tests/bug54440.phpt new file mode 100644 index 0000000000..4074ff9fe8 --- /dev/null +++ b/ext/libxml/tests/bug54440.phpt @@ -0,0 +1,51 @@ +--TEST-- +Bug #54440: libxml extension ignores default context +--SKIPIF-- +<?php if (!extension_loaded('simplexml')) die('skip simplexml required for this test'); ?> +--FILE-- +<?php + +class TestWrapper { + +function stream_open($path, $mode, $options, &$opened_path) +{ + if ($this->context) + print_r(stream_context_get_options($this->context)); + return false; +} + +function url_stat($path, $flags) +{ +return array(); +} + +} + +stream_wrapper_register("test", "TestWrapper") + or die("Failed to register protocol"); + +$ctx1 = stream_context_create(array('test'=>array('test'=>'test 1'))); +$ctx2 = stream_context_create(array('test'=>array('test'=>'test 2'))); + +stream_context_set_default(stream_context_get_options($ctx1)); +@simplexml_load_file('test://sdfsdf'); + +libxml_set_streams_context($ctx2); +@simplexml_load_file('test://sdfsdf'); +--EXPECT-- +Array +( + [test] => Array + ( + [test] => test 1 + ) + +) +Array +( + [test] => Array + ( + [test] => test 2 + ) + +) |