about summary refs log tree commit diff stats
path: root/src/librarian
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2023-04-16 09:32:54 +0200
committerptitSeb <sebastien.chev@gmail.com>2023-04-16 09:32:54 +0200
commit9880a488ac919316f07a8ce5e8da546fb9029cf6 (patch)
tree4f08812f2f68d56c62ccdaf954a8c21a60b24876 /src/librarian
parentf59675e9bf438cfca082c5d35bc07ca19762195b (diff)
downloadbox64-9880a488ac919316f07a8ce5e8da546fb9029cf6.tar.gz
box64-9880a488ac919316f07a8ce5e8da546fb9029cf6.zip
Another fix for dlopen/dlclose sequence (should be ok now, at last)
Diffstat (limited to 'src/librarian')
-rwxr-xr-xsrc/librarian/library.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/librarian/library.c b/src/librarian/library.c
index 085d954d..9f852408 100755
--- a/src/librarian/library.c
+++ b/src/librarian/library.c
@@ -1079,8 +1079,9 @@ void IncRefCount(library_t* lib, x64emu_t* emu)
         case LIB_WRAPPED:
             ++lib->w.refcnt;
             if(lib->w.needed)
-                for(int i=0; i<lib->w.needed->size; ++i)
+                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;
@@ -1102,7 +1103,8 @@ int DecRefCount(library_t** lib, x64emu_t* emu)
     switch ((*lib)->type) {
         case LIB_WRAPPED:
             needed = (*lib)->w.needed;
-            if(!(ret=--(*lib)->w.refcnt)) {
+            ret=--(*lib)->w.refcnt;
+            if(!ret) {
                 needed = copy_neededlib(needed);
                 freed=1;
                 Free1Library(lib, emu);
@@ -1110,7 +1112,8 @@ int DecRefCount(library_t** lib, x64emu_t* emu)
             break;
         case LIB_EMULATED:
             needed = (*lib)->e.elf->needed;
-            if(!(ret=--(*lib)->e.elf->refcnt)) {
+            ret=--(*lib)->e.elf->refcnt;
+            if(!ret) {
                 needed = copy_neededlib(needed);
                 freed=1;
                 removeLinkMapLib(*lib);