Author: bdrewery
Date: Tue Feb  2 23:33:58 2016
New Revision: 295176
URL: https://svnweb.freebsd.org/changeset/base/295176

Log:
  Move logic to destroy a struct catentry to its own function.
  
  This will be used later for memory leak handling.
  
  Obtained from:        OneFS
  Sponsored by: EMC / Isilon Storage Division

Modified:
  head/lib/libc/nls/msgcat.c

Modified: head/lib/libc/nls/msgcat.c
==============================================================================
--- head/lib/libc/nls/msgcat.c  Tue Feb  2 23:23:37 2016        (r295175)
+++ head/lib/libc/nls/msgcat.c  Tue Feb  2 23:33:58 2016        (r295176)
@@ -325,6 +325,21 @@ notfound:
        return ((char *)s);
 }
 
+static void
+catfree(struct catentry *np)
+{
+
+       if (np->catd != NULL && np->catd != NLERR) {
+               munmap(np->catd->__data, (size_t)np->catd->__size);
+               free(np->catd);
+       }
+       SLIST_REMOVE(&cache, np, catentry, list);
+       free(np->name);
+       free(np->path);
+       free(np->lang);
+       free(np);
+}
+
 int
 catclose(nl_catd catd)
 {
@@ -341,15 +356,8 @@ catclose(nl_catd catd)
        SLIST_FOREACH(np, &cache, list) {
                if (catd == np->catd) {
                        np->refcount--;
-                       if (np->refcount == 0) {
-                               munmap(catd->__data, (size_t)catd->__size);
-                               free(catd);
-                               SLIST_REMOVE(&cache, np, catentry, list);
-                               free(np->name);
-                               free(np->path);
-                               free(np->lang);
-                               free(np);
-                       }
+                       if (np->refcount == 0)
+                               catfree(np);
                        break;
                }
        }
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to