aboutsummaryrefslogtreecommitdiff
path: root/src/mmap.c
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2011-08-17 18:20:48 +0000
committerSergey Poznyakoff <gray@gnu.org.ua>2011-08-17 18:20:48 +0000
commit9fd45622e2cda584e13bf1d3f08960d4fead3c0d (patch)
tree31ce33c0642a9fde9c9c47514bbdf2022eded831 /src/mmap.c
parente22604d840c4db32fed14e59f56c5e4f419692d8 (diff)
downloadgdbm-9fd45622e2cda584e13bf1d3f08960d4fead3c0d.tar.gz
gdbm-9fd45622e2cda584e13bf1d3f08960d4fead3c0d.tar.bz2
Make sure errno is preserved, if it can contain details about the gdbm error.
* src/gdbmdefs.h (SAVE_ERRNO): New macro. * src/gdbmopen.c: Use SAVE_ERRNO where it is important to preserve system errno. * src/mmap.c: Likewise. * doc/gdbm.texinfo: Document which gdbm errors can be detailed by inspecting the system errno.
Diffstat (limited to 'src/mmap.c')
-rw-r--r--src/mmap.c6
1 files changed, 1 insertions, 5 deletions
diff --git a/src/mmap.c b/src/mmap.c
index 44101e9..8735624 100644
--- a/src/mmap.c
+++ b/src/mmap.c
@@ -134,10 +134,8 @@ _gdbm_mapped_remap (GDBM_FILE dbf, off_t size, int flag)
if (_gdbm_file_size (dbf, &file_size))
{
- int ec = errno;
+ SAVE_ERRNO (_gdbm_mapped_unmap (dbf));
gdbm_errno = GDBM_FILE_STAT_ERROR;
- _gdbm_mapped_unmap (dbf);
- errno = ec;
return -1;
}
@@ -332,9 +330,7 @@ _gdbm_mapped_lseek (GDBM_FILE dbf, off_t offset, int whence)
off_t file_size;
if (_gdbm_file_size (dbf, &file_size))
{
- int ec = errno;
gdbm_errno = GDBM_FILE_STAT_ERROR;
- errno = ec;
return -1;
}
needle = file_size - offset;

Return to:

Send suggestions and report system problems to the System administrator.