dlclose tries to decrease the ref count of the dll* entry, but a new dll
opened by dlopen doesn't create a new dll* entry.
---
 winsup/cygwin/dlfcn.cc | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/winsup/cygwin/dlfcn.cc b/winsup/cygwin/dlfcn.cc
index fb7052473..3093ec1be 100644
--- a/winsup/cygwin/dlfcn.cc
+++ b/winsup/cygwin/dlfcn.cc
@@ -350,14 +350,15 @@ dlclose (void *handle)
     {
       /* reference counting */
       dll *d = dlls.find (handle);
-      if (!d || d->count <= 0)
+      if (d && d->count <= 0)
        {
          errno = ENOENT;
          ret = -1;
        }
       else
        {
-         --d->count;
+         if (d)
+           --d->count;
          if (!FreeLibrary ((HMODULE) handle))
            {
              __seterrno ();
-- 
2.48.1.windows.1-2

Reply via email to