1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-04 09:09:56 +00:00

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
This commit is contained in:
Bryan Drewery 2016-02-02 23:33:58 +00:00
parent 0fd00e0caa
commit b231dc0a9f
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=295176

View File

@ -325,6 +325,21 @@ catgets(nl_catd catd, int set_id, int msg_id, const char *s)
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;
}
}