mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-05-31 13:33:36 +00:00
Merge pull request #12784 from FRRouting/mergify/bp/dev/8.5/pr-12781
lib: Release memory of YANG translation module on error (backport #12781)
This commit is contained in:
commit
badd2b2647
@ -127,10 +127,15 @@ static void yang_mapping_add(struct yang_translator *translator, int dir,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void yang_tmodule_delete(struct yang_tmodule *tmodule)
|
||||||
|
{
|
||||||
|
XFREE(MTYPE_YANG_TRANSLATOR_MODULE, tmodule);
|
||||||
|
}
|
||||||
|
|
||||||
struct yang_translator *yang_translator_load(const char *path)
|
struct yang_translator *yang_translator_load(const char *path)
|
||||||
{
|
{
|
||||||
struct yang_translator *translator;
|
struct yang_translator *translator;
|
||||||
struct yang_tmodule *tmodule;
|
struct yang_tmodule *tmodule = NULL;
|
||||||
const char *family;
|
const char *family;
|
||||||
struct lyd_node *dnode;
|
struct lyd_node *dnode;
|
||||||
struct ly_set *set;
|
struct ly_set *set;
|
||||||
@ -160,6 +165,7 @@ struct yang_translator *yang_translator_load(const char *path)
|
|||||||
flog_warn(EC_LIB_YANG_TRANSLATOR_LOAD,
|
flog_warn(EC_LIB_YANG_TRANSLATOR_LOAD,
|
||||||
"%s: module translator \"%s\" is loaded already",
|
"%s: module translator \"%s\" is loaded already",
|
||||||
__func__, family);
|
__func__, family);
|
||||||
|
yang_dnode_free(dnode);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -282,15 +288,11 @@ struct yang_translator *yang_translator_load(const char *path)
|
|||||||
error:
|
error:
|
||||||
yang_dnode_free(dnode);
|
yang_dnode_free(dnode);
|
||||||
yang_translator_unload(translator);
|
yang_translator_unload(translator);
|
||||||
|
yang_tmodule_delete(tmodule);
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void yang_tmodule_delete(struct yang_tmodule *tmodule)
|
|
||||||
{
|
|
||||||
XFREE(MTYPE_YANG_TRANSLATOR_MODULE, tmodule);
|
|
||||||
}
|
|
||||||
|
|
||||||
void yang_translator_unload(struct yang_translator *translator)
|
void yang_translator_unload(struct yang_translator *translator)
|
||||||
{
|
{
|
||||||
for (size_t i = 0; i < YANG_TRANSLATE_MAX; i++)
|
for (size_t i = 0; i < YANG_TRANSLATE_MAX; i++)
|
||||||
|
Loading…
Reference in New Issue
Block a user