From d5099efc47d4e6ac60816b5381a5f607ab03f06e Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Wed, 13 Aug 2014 01:00:18 +0200 Subject: hashmap: introduce hash_ops to make struct Hashmap smaller It is redundant to store 'hash' and 'compare' function pointers in struct Hashmap separately. The functions always comprise a pair. Store a single pointer to struct hash_ops instead. systemd keeps hundreds of hashmaps, so this saves a little bit of memory. --- src/shared/install.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/shared/install.c') diff --git a/src/shared/install.c b/src/shared/install.c index 3ef995a928..5d3fcf5e32 100644 --- a/src/shared/install.c +++ b/src/shared/install.c @@ -179,7 +179,7 @@ static int mark_symlink_for_removal( assert(p); - r = set_ensure_allocated(remove_symlinks_to, string_hash_func, string_compare_func); + r = set_ensure_allocated(remove_symlinks_to, &string_hash_ops); if (r < 0) return r; @@ -884,7 +884,7 @@ static int install_info_add( hashmap_get(c->will_install, name)) return 0; - r = hashmap_ensure_allocated(&c->will_install, string_hash_func, string_compare_func); + r = hashmap_ensure_allocated(&c->will_install, &string_hash_ops); if (r < 0) return r; @@ -1393,7 +1393,7 @@ static int install_context_apply( while ((i = hashmap_first(c->will_install))) { - q = hashmap_ensure_allocated(&c->have_installed, string_hash_func, string_compare_func); + q = hashmap_ensure_allocated(&c->have_installed, &string_hash_ops); if (q < 0) return q; @@ -1434,7 +1434,7 @@ static int install_context_mark_for_removal( while ((i = hashmap_first(c->will_install))) { - q = hashmap_ensure_allocated(&c->have_installed, string_hash_func, string_compare_func); + q = hashmap_ensure_allocated(&c->have_installed, &string_hash_ops); if (q < 0) return q; -- cgit v1.2.3-54-g00ecf