diff options
author | Sergey Poznyakoff <gray@gnu.org> | 2018-05-30 14:34:24 +0300 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org> | 2018-05-30 14:34:24 +0300 |
commit | 156f33c8aa5b5c113987c353bbd32c70f02f6a9d (patch) | |
tree | cca8dde609d34b202c1b7d0a5148cfa38b129ba9 /src/gdbmdelete.c | |
parent | 60605e947884726fe14c8896fa5c766f6e99742a (diff) | |
download | gdbm-156f33c8aa5b5c113987c353bbd32c70f02f6a9d.tar.gz gdbm-156f33c8aa5b5c113987c353bbd32c70f02f6a9d.tar.bz2 |
Avoid unnecessary memory reallocations during caching
* src/findkey.c (_gdbm_read_entry): Reallocate cache_entry->ca_data.dptr only
if necessary.
* src/gdbmdefs.h (data_cache_elem): New member: dsize
* src/gdbmdelete.c: Don't free cache_entry->ca_data.dptr
* src/gdbmopen.c (_gdbm_init_cache): Initialize ca_data.dsize
Diffstat (limited to 'src/gdbmdelete.c')
-rw-r--r-- | src/gdbmdelete.c | 7 |
1 files changed, 1 insertions, 6 deletions
diff --git a/src/gdbmdelete.c b/src/gdbmdelete.c index 5660d3a..ff13a1a 100644 --- a/src/gdbmdelete.c +++ b/src/gdbmdelete.c @@ -88,12 +88,7 @@ gdbm_delete (GDBM_FILE dbf, datum key) /* Set the flags. */ dbf->bucket_changed = TRUE; - /* Clear out the data cache for the current bucket. */ - if (dbf->cache_entry->ca_data.dptr != NULL) - { - free (dbf->cache_entry->ca_data.dptr); - dbf->cache_entry->ca_data.dptr = NULL; - } + /* Invalidate data cache for the current bucket. */ dbf->cache_entry->ca_data.hash_val = -1; dbf->cache_entry->ca_data.key_size = 0; dbf->cache_entry->ca_data.elem_loc = -1; |