diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2023-05-03 13:51:40 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2023-05-03 13:51:40 +0200 |
| commit | 3a4d58f114a2f030f0937abae4c0ef7ec882641a (patch) | |
| tree | 8d730549f16083b71ffaf4f80660da628691402a /src/librarian | |
| parent | 494f054ef4d94210c07ca046e049900f507b4ac5 (diff) | |
| download | box64-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.c | 13 |
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) |