summaryrefslogtreecommitdiffstats
path: root/lib/libc
diff options
context:
space:
mode:
authorgjb <gjb@FreeBSD.org>2016-02-03 02:02:01 +0000
committergjb <gjb@FreeBSD.org>2016-02-03 02:02:01 +0000
commit467dadb17d773765bbb00076187d99880fea1722 (patch)
tree85ff5948d73233a0bc8c10d4dd2f88832a8d06b9 /lib/libc
parent6f838427cecd80211f44a72ded64da320869a22e (diff)
downloadFreeBSD-src-467dadb17d773765bbb00076187d99880fea1722.zip
FreeBSD-src-467dadb17d773765bbb00076187d99880fea1722.tar.gz
MFH
Sponsored by: The FreeBSD Foundation
Diffstat (limited to 'lib/libc')
-rw-r--r--lib/libc/nls/msgcat.c26
1 files changed, 17 insertions, 9 deletions
diff --git a/lib/libc/nls/msgcat.c b/lib/libc/nls/msgcat.c
index 0cba460..3df76b6 100644
--- a/lib/libc/nls/msgcat.c
+++ b/lib/libc/nls/msgcat.c
@@ -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;
}
}
OpenPOWER on IntegriCloud