From: Alan T. DeKok Date: Sat, 3 Feb 2024 16:05:20 +0000 (-0500) Subject: don't add the dependency twice X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b3deed67d16a2159d8059795a989ed1cd87b298c;p=thirdparty%2Ffreeradius-server.git don't add the dependency twice --- diff --git a/src/lib/util/dict_tokenize.c b/src/lib/util/dict_tokenize.c index babda41dedc..3d4822210b4 100644 --- a/src/lib/util/dict_tokenize.c +++ b/src/lib/util/dict_tokenize.c @@ -2891,6 +2891,7 @@ int fr_dict_protocol_afrom_file(fr_dict_t **out, char const *proto_name, char co { char *dict_dir = NULL; fr_dict_t *dict; + bool added = false; *out = NULL; @@ -2917,7 +2918,10 @@ int fr_dict_protocol_afrom_file(fr_dict_t **out, char const *proto_name, char co * When we have A->B->A, it means that we don't need to track B->A, because we track * A->B. And if A is freed, then B is freed. */ - if (!dict->loading) dict_dependent_add(dict, dependent); + if (!dict->loading) { + added = true; + dict_dependent_add(dict, dependent); + } /* * But we only return a pre-existing dict if _this function_ has loaded it. @@ -2976,7 +2980,7 @@ int fr_dict_protocol_afrom_file(fr_dict_t **out, char const *proto_name, char co talloc_free(dict_dir); - dict_dependent_add(dict, dependent); + if (!added) dict_dependent_add(dict, dependent); *out = dict;