rcx

library of miscellaneous bits of C code
git clone git://git.rr3.xyz/rcx
Log | Files | Refs | README | LICENSE

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:
Msrc/vmem.c | 10++++++++--
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;