diff options
Diffstat (limited to 'lib/yang_translator.c')
| -rw-r--r-- | lib/yang_translator.c | 14 | 
1 files changed, 8 insertions, 6 deletions
diff --git a/lib/yang_translator.c b/lib/yang_translator.c index 8b0fbcd14b..de668230ab 100644 --- a/lib/yang_translator.c +++ b/lib/yang_translator.c @@ -114,10 +114,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 *translator; -	struct yang_tmodule *tmodule; +	struct yang_tmodule *tmodule = NULL;  	const char *family;  	struct lyd_node *dnode;  	struct ly_set *set; @@ -147,6 +152,7 @@ struct yang_translator *yang_translator_load(const char *path)  		flog_warn(EC_LIB_YANG_TRANSLATOR_LOAD,  			  "%s: module translator \"%s\" is loaded already",  			  __func__, family); +		yang_dnode_free(dnode);  		return NULL;  	} @@ -269,15 +275,11 @@ struct yang_translator *yang_translator_load(const char *path)  error:  	yang_dnode_free(dnode);  	yang_translator_unload(translator); +	yang_tmodule_delete(tmodule);  	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)  {  	for (size_t i = 0; i < YANG_TRANSLATE_MAX; i++)  | 
