commit 3e56f572281af2cbcec5e3df5142b70d977cdb21
parent 4d33684aaff41f7519b8d750941e7b085695b389
Author: Robert Russell <robertrussell.72001@gmail.com>
Date: Fri, 24 Mar 2023 16:30:01 -0700
vmem: close error handling
Diffstat:
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/src/vmem.c b/src/vmem.c
@@ -77,13 +77,19 @@ vmem_open(usize *len, void *p, char *path, char *opt) {
if (grow) {
if (ftruncate(fd, *len) < 0) {
- close(fd);
+ int e = errno;
+ if (close(fd) < 0)
+ r_errorf("vmem_open: close: %s", strerror(errno));
+ errno = e;
return 0;
}
}
void *q = mmap(p, *len == 0 ? sb.st_size : *len, prot, mflags, fd, 0);
- close(fd);
+ int e = errno;
+ if (close(fd) < 0)
+ r_errorf("vmem_open: close: %s", strerror(errno));
+ errno = e;
if (q == MAP_FAILED) return 0;
if (*len == 0) *len = sb.st_size;