about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/librarian/symbols.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/librarian/symbols.c b/src/librarian/symbols.c
index 7ac6d810..3c37e9c0 100644
--- a/src/librarian/symbols.c
+++ b/src/librarian/symbols.c
@@ -286,8 +286,16 @@ void AddDefaultVersion(kh_defaultversion_t* def, const char* symname, const char
 }
 const char* GetDefaultVersion(kh_defaultversion_t* def, const char* symname)
 {
+    // small Q'nD cache of last value, because it's called many time
+    static const char* previous_res = NULL;
+    static const char* previous_name = NULL;
+    if(previous_name == symname)
+        return previous_res;
     khint_t k = kh_get(defaultversion, def, symname);
+    previous_name = symname;
     if(k==kh_end(def))
-        return NULL;
-    return kh_value(def, k);
+        previous_res = NULL;
+    else
+        previous_res = kh_value(def, k);
+    return previous_res;
 }