return PHP_STREAM_OPTION_RETURN_ERR;
}
- if (range->length == 0) {
- range->length = GetFileSize(hfile, NULL) - range->offset;
+ size = GetFileSize(hfile, NULL);
+ if (range->length == 0 && range->offset > 0 && range->offset < size) {
+ range->length = size - range->offset;
+ }
+ if (range->length == 0 || range->length > size) {
+ range->length = size;
+ }
+ if (range->offset >= size) {
+ range->offset = size;
+ range->length = 0;
}
/* figure out how big a chunk to map to be able to view the part that we need */