From dc8ac4c2f072631ae6cd667716d189e5785d1b36 Mon Sep 17 00:00:00 2001 From: Sergey Poznyakoff Date: Fri, 30 Jul 2021 07:37:23 +0300 Subject: Minor change * src/gdbmdefs.h (GDBM_HEADER_AVAIL_SIZE): Removed. (GDBM_HEADER_AVAIL_OFFSET): New macro. * src/avail.c: Use dbf->avail_size and GDBM_HEADER_AVAIL_OFFSET. * src/gdbmopen.c: Likewise. --- src/avail.c | 6 ++---- src/gdbmdefs.h | 4 +++- src/gdbmopen.c | 8 +++----- 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/src/avail.c b/src/avail.c index db7061c..c361d5a 100644 --- a/src/avail.c +++ b/src/avail.c @@ -214,12 +214,10 @@ gdbm_avail_traverse (GDBM_FILE dbf, int rc = 0; GDBM_ASSERT_CONSISTENCY (dbf, -1); - if (gdbm_avail_block_validate (dbf, dbf->avail, - GDBM_HEADER_AVAIL_SIZE (dbf))) + if (gdbm_avail_block_validate (dbf, dbf->avail, dbf->avail_size)) return -1; - // FIXME - if (off_map_lookup (&map, (char*)dbf->avail - (char*)dbf->header)) + if (off_map_lookup (&map, GDBM_HEADER_AVAIL_OFFSET (dbf))) { GDBM_SET_ERRNO (dbf, GDBM_MALLOC_ERROR, FALSE); return -1; diff --git a/src/gdbmdefs.h b/src/gdbmdefs.h index ca88902..e1dcc66 100644 --- a/src/gdbmdefs.h +++ b/src/gdbmdefs.h @@ -326,7 +326,9 @@ struct gdbm_file_info #define GDBM_DIR_COUNT(db) ((db)->header->dir_size / sizeof (off_t)) -#define GDBM_HEADER_AVAIL_SIZE(db) ((db)->avail_size) +/* Offset of the avail block in GDBM header. */ +#define GDBM_HEADER_AVAIL_OFFSET(db) \ + ((char*)(db)->avail - (char*)(db)->header) /* Execute CODE without clobbering errno */ #define SAVE_ERRNO(code) \ diff --git a/src/gdbmopen.c b/src/gdbmopen.c index 360d113..4c3b5e2 100644 --- a/src/gdbmopen.c +++ b/src/gdbmopen.c @@ -211,8 +211,7 @@ _gdbm_validate_header (GDBM_FILE dbf) rc = validate_header (dbf->header, &file_stat); if (rc == 0) { - if (gdbm_avail_block_validate (dbf, dbf->avail, - GDBM_HEADER_AVAIL_SIZE (dbf))) + if (gdbm_avail_block_validate (dbf, dbf->avail, dbf->avail_size)) rc = GDBM_BAD_AVAIL; } return rc; @@ -590,7 +589,7 @@ gdbm_fd_open (int fd, const char *file_name, int block_size, gdbm_header_avail (dbf->header, &dbf->avail, &dbf->avail_size, &dbf->xheader); if (((dbf->header->block_size - - (((char*)dbf->avail - (char*)dbf->header) + + (GDBM_HEADER_AVAIL_OFFSET (dbf) + sizeof (avail_block))) / sizeof (avail_elem) + 1) != dbf->avail->size) { if (!(flags & GDBM_CLOERROR)) @@ -599,8 +598,7 @@ gdbm_fd_open (int fd, const char *file_name, int block_size, return NULL; } - if (gdbm_avail_block_validate (dbf, dbf->avail, - GDBM_HEADER_AVAIL_SIZE (dbf))) + if (gdbm_avail_block_validate (dbf, dbf->avail, dbf->avail_size)) { if (!(flags & GDBM_CLOERROR)) dbf->desc = -1; -- cgit v1.2.1