summaryrefslogtreecommitdiff
path: root/ext/libxml/libxml.c
diff options
context:
space:
mode:
authorChristoph M. Becker <cmbecker69@gmx.de>2020-02-03 23:10:20 +0100
committerChristoph M. Becker <cmbecker69@gmx.de>2020-02-03 23:31:46 +0100
commitfe1bfb78d65d28dd151da417477a0cee51de8afb (patch)
treeef3cb80b0b846a838ec47cb3266b080223cabfe3 /ext/libxml/libxml.c
parentb93e4aa11c409ae34c9088ba976117438fc80b9c (diff)
downloadphp-git-fe1bfb78d65d28dd151da417477a0cee51de8afb.tar.gz
Fix #79191: Error in SoapClient ctor disables DOMDocument::save()
The culprit is the too restrictive fix for bug #71536, which prevents `php_libxml_streams_IO_write()` from properly executing when unclean shutdown is flagged. A *more* suitable solution is to move the `xmlwriter_free_resource_ptr()` call from the `free_obj` handler to an added `dtor_obj` handler, to avoid to write to a closed stream in case of late object freeing. This makes the `EG(active)` guard superfluous. We also fix bug79029.phpt which has to use different variables for the three parts to actually check the original shutdown issue. Thanks to bwoebi and daverandom for helping to investigate this issue.
Diffstat (limited to 'ext/libxml/libxml.c')
-rw-r--r--ext/libxml/libxml.c3
1 files changed, 0 insertions, 3 deletions
diff --git a/ext/libxml/libxml.c b/ext/libxml/libxml.c
index 864e5a36fb..2be6a5b47a 100644
--- a/ext/libxml/libxml.c
+++ b/ext/libxml/libxml.c
@@ -385,9 +385,6 @@ static int php_libxml_streams_IO_read(void *context, char *buffer, int len)
static int php_libxml_streams_IO_write(void *context, const char *buffer, int len)
{
- if (CG(unclean_shutdown)) {
- return -1;
- }
return php_stream_write((php_stream*)context, buffer, len);
}