diff options
author | Nikita Popov <nikita.ppv@gmail.com> | 2019-10-10 12:07:47 +0200 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2019-10-10 12:08:04 +0200 |
commit | f43f493e09b28d8d3924fbcea2392108ca7f5f65 (patch) | |
tree | 10cd7f11e6169c001fb28f362dce2bb4bb036868 | |
parent | b02cf8b66eadbff1ca4ea385f9719d944a9a158a (diff) | |
download | php-git-f43f493e09b28d8d3924fbcea2392108ca7f5f65.tar.gz |
Also check for exception after stream_eof
-rw-r--r-- | main/streams/userspace.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/main/streams/userspace.c b/main/streams/userspace.c index af7f0b4fa2..91fd83954c 100644 --- a/main/streams/userspace.c +++ b/main/streams/userspace.c @@ -700,12 +700,17 @@ static ssize_t php_userstreamop_read(php_stream *stream, char *buf, size_t count /* since the user stream has no way of setting the eof flag directly, we need to ask it if we hit eof */ ZVAL_STRINGL(&func_name, USERSTREAM_EOF, sizeof(USERSTREAM_EOF)-1); - call_result = call_user_function(NULL, Z_ISUNDEF(us->object)? NULL : &us->object, &func_name, &retval, 0, NULL); + zval_ptr_dtor(&func_name); + + if (EG(exception)) { + stream->eof = 1; + return -1; + } if (call_result == SUCCESS && Z_TYPE(retval) != IS_UNDEF && zval_is_true(&retval)) { stream->eof = 1; @@ -718,7 +723,6 @@ static ssize_t php_userstreamop_read(php_stream *stream, char *buf, size_t count } zval_ptr_dtor(&retval); - zval_ptr_dtor(&func_name); return didread; } |