diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2023-05-10 22:52:03 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2023-05-10 22:52:03 +0200 |
| commit | 7787cb59f0c0a0f9ebb38c921ad3e6dad225c49b (patch) | |
| tree | c24bdfbe182542e8ef0d78e795fae60610a6a4ed /src | |
| parent | dac27435b84d0330a28ccc60b668eb2d53f70493 (diff) | |
| download | box64-7787cb59f0c0a0f9ebb38c921ad3e6dad225c49b.tar.gz box64-7787cb59f0c0a0f9ebb38c921ad3e6dad225c49b.zip | |
Don't Inc/Dec library refcount recursively (helps #240 but it's not enough)
Diffstat (limited to 'src')
| -rwxr-xr-x | src/librarian/library.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/src/librarian/library.c b/src/librarian/library.c index 4f9c95c8..eb28ecb5 100755 --- a/src/librarian/library.c +++ b/src/librarian/library.c @@ -1104,21 +1104,21 @@ void setNeededLibs(library_t* lib, int n, ...) void IncRefCount(library_t* lib, x64emu_t* emu) { - if(lib->type==LIB_UNNKNOW) + if(!lib || lib->type==LIB_UNNKNOW) return; switch (lib->type) { case LIB_WRAPPED: ++lib->w.refcnt; - if(lib->w.needed) + /*if(lib->w.needed) for(int i=0; i<lib->w.needed->size; ++i) { IncRefCount(lib->w.needed->libs[i], emu); - } + }*/ break; case LIB_EMULATED: ++lib->e.elf->refcnt; - if(lib->e.elf->needed) - for(int i=0; i<lib->e.elf->needed->size; ++i) - IncRefCount(lib->e.elf->needed->libs[i], emu); + /*if(lib->e.elf->needed) + for(int i=0; i<lib->e.elf->needed->size; ++i) // some libs may not be loaded yet + IncRefCount(lib->e.elf->needed->libs[i], emu);*/ } } @@ -1155,9 +1155,9 @@ int DecRefCount(library_t** lib, x64emu_t* emu) } break; } - if(needed) + /*if(needed) for(int i=0; i<needed->size; ++i) - DecRefCount(&needed->libs[i], emu); + DecRefCount(&needed->libs[i], emu);*/ if(freed) free_neededlib(needed); return ret; |