Skip to content

Commit

Permalink
- Fixed bug #54440: libxml extension ignores default context.
Browse files Browse the repository at this point in the history
  • Loading branch information
cataphract committed Apr 9, 2011
1 parent f2cfb99 commit 047ed8d
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 3 deletions.
3 changes: 3 additions & 0 deletions NEWS
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,9 @@ PHP NEWS
. Fixed bug #53339 (Fails to build when compilng with gcc 4.5 and DSO
libraries). (Clint Byrum, Raphael)

- libxml extension:
. Fixed bug #54440 (libxml extension ignores default context). (Gustavo)

- mbstring extension:
. Fixed bug #54494 (mb_substr() mishandles UTF-32LE and UCS-2LE). (Gustavo)

Expand Down
4 changes: 1 addition & 3 deletions ext/libxml/libxml.c
Original file line number Diff line number Diff line change
Expand Up @@ -310,9 +310,7 @@ 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());
}
context = php_stream_context_from_zval(LIBXML(stream_context), 0);

ret_val = php_stream_open_wrapper_ex(path_to_open, (char *)mode, ENFORCE_SAFE_MODE|REPORT_ERRORS, NULL, context);
if (isescaped) {
Expand Down
51 changes: 51 additions & 0 deletions ext/libxml/tests/bug54440.phpt
Original file line number Diff line number Diff line change
@@ -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
)

)

0 comments on commit 047ed8d

Please sign in to comment.