aboutsummaryrefslogtreecommitdiff
path: root/src/gdbmdelete.c
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org>2018-05-30 14:34:24 +0300
committerSergey Poznyakoff <gray@gnu.org>2018-05-30 14:34:24 +0300
commit156f33c8aa5b5c113987c353bbd32c70f02f6a9d (patch)
treecca8dde609d34b202c1b7d0a5148cfa38b129ba9 /src/gdbmdelete.c
parent60605e947884726fe14c8896fa5c766f6e99742a (diff)
downloadgdbm-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.c7
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;

Return to:

Send suggestions and report system problems to the System administrator.