about summary refs log tree commit diff stats
path: root/src/librarian
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2023-05-03 13:51:40 +0200
committerptitSeb <sebastien.chev@gmail.com>2023-05-03 13:51:40 +0200
commit3a4d58f114a2f030f0937abae4c0ef7ec882641a (patch)
tree8d730549f16083b71ffaf4f80660da628691402a /src/librarian
parent494f054ef4d94210c07ca046e049900f507b4ac5 (diff)
downloadbox64-3a4d58f114a2f030f0937abae4c0ef7ec882641a.tar.gz
box64-3a4d58f114a2f030f0937abae4c0ef7ec882641a.zip
Improved mallock_hack_2, trying to reduce potential memory leaks
Diffstat (limited to 'src/librarian')
-rw-r--r--src/librarian/symbols.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/librarian/symbols.c b/src/librarian/symbols.c
index bbe7f941..cb59430a 100644
--- a/src/librarian/symbols.c
+++ b/src/librarian/symbols.c
@@ -170,6 +170,19 @@ void AddSymbol(kh_mapsymbols_t *mapsymbols, const char* name, uintptr_t addr, ui
     v->syms[idx].sym.sz = sz;
 }
 
+void ForceUpdateSymbol(kh_mapsymbols_t *mapsymbols, const char* name, uintptr_t addr, uint32_t sz)
+{
+    int ret;
+    khint_t k = kh_put(mapsymbols, mapsymbols, name, &ret);
+    versymbols_t * v = &kh_val(mapsymbols, k);
+    if(ret) {v->sz = v->cap = 0; v->syms = NULL;}
+    // now check if that version already exist, and update record and exit if yes
+    for(int i=0; i<v->sz; ++i) {
+        v->syms[i].sym.offs = addr;
+        v->syms[i].sym.sz = sz;
+    }
+}
+
 uintptr_t FindSymbol(kh_mapsymbols_t *mapsymbols, const char* name, int ver, const char* vername, int local, const char* defver)
 {
     if(!mapsymbols)