summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS2
-rwxr-xr-xmain/streams/streams.c10
2 files changed, 12 insertions, 0 deletions
diff --git a/NEWS b/NEWS
index 7b9bc11edb..30e58fad7a 100644
--- a/NEWS
+++ b/NEWS
@@ -5,6 +5,8 @@ PHP NEWS
. Fixed bug #53727 (Inconsistent behavior of is_subclass_of with interfaces)
(Ralph Schindler, Dmitry)
. Fixed buffer overflow on overlog salt in crypt(). (Clément LECIGNE, Stas)
+ . Fixed bug #52935 (call exit in user_error_handler cause stream relate
+ core). (Gustavo)
- PDO DBlib:
. Fixed bug #54329 (MSSql extension memory leak).
diff --git a/main/streams/streams.c b/main/streams/streams.c
index eb2eb07082..81adff8137 100755
--- a/main/streams/streams.c
+++ b/main/streams/streams.c
@@ -154,6 +154,7 @@ void php_stream_display_wrapper_errors(php_stream_wrapper *wrapper, const char *
char *tmp = estrdup(path);
char *msg;
int free_msg = 0;
+ php_stream_wrapper orig_wrapper;
if (wrapper) {
if (wrapper->err_count > 0) {
@@ -198,7 +199,16 @@ void php_stream_display_wrapper_errors(php_stream_wrapper *wrapper, const char *
}
php_strip_url_passwd(tmp);
+ if (wrapper) {
+ /* see bug #52935 */
+ orig_wrapper = *wrapper;
+ wrapper->err_stack = NULL;
+ wrapper->err_count = 0;
+ }
php_error_docref1(NULL TSRMLS_CC, tmp, E_WARNING, "%s: %s", caption, msg);
+ if (wrapper) {
+ *wrapper = orig_wrapper;
+ }
efree(tmp);
if (free_msg) {
efree(msg);