diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2011-08-17 18:20:48 +0000 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2011-08-17 18:20:48 +0000 |
commit | 9fd45622e2cda584e13bf1d3f08960d4fead3c0d (patch) | |
tree | 31ce33c0642a9fde9c9c47514bbdf2022eded831 /src/mmap.c | |
parent | e22604d840c4db32fed14e59f56c5e4f419692d8 (diff) | |
download | gdbm-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.c | 6 |
1 files changed, 1 insertions, 5 deletions
@@ -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; |