summaryrefslogtreecommitdiff
path: root/main/streams/plain_wrapper.c
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2019-07-17 15:59:05 +0200
committerNikita Popov <nikita.ppv@gmail.com>2019-07-17 15:59:14 +0200
commit79efd55fc366e3b33c6730f0bfa2cbf9f89d4368 (patch)
treeaf06600bec362180eeaf38b6f467474f347c34e2 /main/streams/plain_wrapper.c
parente7e66d527554df6c5ba9061731487a3e8319bcb7 (diff)
parentb864abfe23fde5d79a303519674ba83062f89361 (diff)
downloadphp-git-79efd55fc366e3b33c6730f0bfa2cbf9f89d4368.tar.gz
Merge branch 'PHP-7.2' into PHP-7.3
Diffstat (limited to 'main/streams/plain_wrapper.c')
-rw-r--r--main/streams/plain_wrapper.c15
1 files changed, 6 insertions, 9 deletions
diff --git a/main/streams/plain_wrapper.c b/main/streams/plain_wrapper.c
index 785da8743b..c975997981 100644
--- a/main/streams/plain_wrapper.c
+++ b/main/streams/plain_wrapper.c
@@ -694,18 +694,15 @@ static int php_stdiop_set_option(php_stream *stream, int option, int value, void
return fd == -1 ? PHP_STREAM_OPTION_RETURN_ERR : PHP_STREAM_OPTION_RETURN_OK;
case PHP_STREAM_MMAP_MAP_RANGE:
- if(do_fstat(data, 1) != 0) {
+ if (do_fstat(data, 1) != 0) {
return PHP_STREAM_OPTION_RETURN_ERR;
}
- if (range->length == 0 && range->offset > 0 && range->offset < data->sb.st_size) {
- range->length = data->sb.st_size - range->offset;
- }
- if (range->length == 0 || range->length > data->sb.st_size) {
- range->length = data->sb.st_size;
- }
- if (range->offset >= data->sb.st_size) {
+ if (range->offset > data->sb.st_size) {
range->offset = data->sb.st_size;
- range->length = 0;
+ }
+ if (range->length == 0 ||
+ range->length > data->sb.st_size - range->offset) {
+ range->length = data->sb.st_size - range->offset;
}
switch (range->mode) {
case PHP_STREAM_MAP_MODE_READONLY: