aboutsummaryrefslogtreecommitdiff
path: root/gold/output.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gold/output.cc')
-rw-r--r--gold/output.cc6
1 files changed, 4 insertions, 2 deletions
diff --git a/gold/output.cc b/gold/output.cc
index b7505ff..afdba06 100644
--- a/gold/output.cc
+++ b/gold/output.cc
@@ -141,12 +141,14 @@ gold_fallocate(int o, off_t offset, off_t len)
#ifdef HAVE_FALLOCATE
{
+ errno = 0;
int err = ::fallocate(o, 0, offset, len);
- if (err != EINVAL && err != ENOSYS && err != EOPNOTSUPP)
- return err;
+ if (err < 0 && errno != EINVAL && errno != ENOSYS && errno != EOPNOTSUPP)
+ return errno;
}
#endif // defined(HAVE_FALLOCATE)
+ errno = 0;
if (::ftruncate(o, offset + len) < 0)
return errno;
return 0;