about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2023-05-10 22:52:03 +0200
committerptitSeb <sebastien.chev@gmail.com>2023-05-10 22:52:03 +0200
commit7787cb59f0c0a0f9ebb38c921ad3e6dad225c49b (patch)
treec24bdfbe182542e8ef0d78e795fae60610a6a4ed /src
parentdac27435b84d0330a28ccc60b668eb2d53f70493 (diff)
downloadbox64-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-xsrc/librarian/library.c16
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;