aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/eval.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/nvim/eval.c')
-rw-r--r--src/nvim/eval.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index c2f84735b2..92fd8a8de3 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -5893,10 +5893,11 @@ int read_blob(FILE *const fd, typval_T *rettv, off_T offset, off_T size_arg)
}
// Trying to read bytes that aren't there results in an empty blob, not an
// error.
- if (size < 0 || size > (off_T)os_fileinfo_size(&file_info)) {
+ if (size < 0 || (!S_ISCHR(file_info.stat.st_mode)
+ && size > (off_T)os_fileinfo_size(&file_info))) {
return OK;
}
- if (vim_fseek(fd, offset, whence) != 0) {
+ if (offset != 0 && vim_fseek(fd, offset, whence) != 0) {
return OK;
}