summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/eval.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/eval.c b/src/eval.c
index 9429981e0..ac4dc1bb5 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -10136,7 +10136,13 @@ f_getfsize(argvars, rettv)
if (mch_isdir(fname))
rettv->vval.v_number = 0;
else
+ {
rettv->vval.v_number = (varnumber_T)st.st_size;
+
+ /* non-perfect check for overflow */
+ if ((off_t)rettv->vval.v_number != (off_t)st.st_size)
+ rettv->vval.v_number = -2;
+ }
}
else
rettv->vval.v_number = -1;