Blame SOURCES/0019-sss_ptr_hash-sss_ptr_hash_delete-fix-optimization.patch

0d441c
From d0eb88089b059bfe2da3bd1a3797b89d69119c29 Mon Sep 17 00:00:00 2001
0d441c
From: Alexey Tikhonov <atikhono@redhat.com>
0d441c
Date: Thu, 23 Jan 2020 19:00:27 +0100
0d441c
Subject: [PATCH 19/23] sss_ptr_hash: sss_ptr_hash_delete fix/optimization
0d441c
MIME-Version: 1.0
0d441c
Content-Type: text/plain; charset=UTF-8
0d441c
Content-Transfer-Encoding: 8bit
0d441c
0d441c
 - no reason to skip hash_delete() just because sss_ptr_hash_lookup_internal()
0d441c
failed
0d441c
 - avoid excessive lookup if it is not required to free payload
0d441c
0d441c
Reviewed-by: Pavel Březina <pbrezina@redhat.com>
0d441c
---
0d441c
 src/util/sss_ptr_hash.c | 17 +++++++++--------
0d441c
 1 file changed, 9 insertions(+), 8 deletions(-)
0d441c
0d441c
diff --git a/src/util/sss_ptr_hash.c b/src/util/sss_ptr_hash.c
0d441c
index f8addec1e..7326244e6 100644
0d441c
--- a/src/util/sss_ptr_hash.c
0d441c
+++ b/src/util/sss_ptr_hash.c
0d441c
@@ -331,20 +331,21 @@ void sss_ptr_hash_delete(hash_table_t *table,
0d441c
     struct sss_ptr_hash_value *value;
0d441c
     hash_key_t table_key;
0d441c
     int hret;
0d441c
-    void *ptr;
0d441c
+    void *payload;
0d441c
 
0d441c
     if (table == NULL || key == NULL) {
0d441c
         return;
0d441c
     }
0d441c
 
0d441c
-    value = sss_ptr_hash_lookup_internal(table, key);
0d441c
-    if (value == NULL) {
0d441c
-        /* Value not found. */
0d441c
-        return;
0d441c
+    if (free_value) {
0d441c
+        value = sss_ptr_hash_lookup_internal(table, key);
0d441c
+        if (value == NULL) {
0d441c
+            free_value = false;
0d441c
+        } else {
0d441c
+            payload = value->ptr;
0d441c
+        }
0d441c
     }
0d441c
 
0d441c
-    ptr = value->ptr;
0d441c
-
0d441c
     table_key.type = HASH_KEY_STRING;
0d441c
     table_key.str = discard_const_p(char, key);
0d441c
 
0d441c
@@ -357,7 +358,7 @@ void sss_ptr_hash_delete(hash_table_t *table,
0d441c
 
0d441c
     /* Also free the original value if requested. */
0d441c
     if (free_value) {
0d441c
-        talloc_free(ptr);
0d441c
+        talloc_free(payload);
0d441c
     }
0d441c
 
0d441c
     return;
0d441c
-- 
0d441c
2.20.1
0d441c