Роман Донченко <[email protected]> writes: > When a non-NULL protolib is returned and own_key is true, the key must > be freed. > --- > prototype.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/prototype.c b/prototype.c > index fa52ff3..22e54c4 100644 > --- a/prototype.c > +++ b/prototype.c > @@ -547,8 +547,11 @@ protolib_cache_maybe_load(struct protolib_cache *cache, > const char *key, int own_key, bool allow_private, > struct protolib **retp) > { > - if (DICT_FIND_VAL(&cache->protolibs, &key, retp) == 0) > + if (DICT_FIND_VAL(&cache->protolibs, &key, retp) == 0) { > + if (*retp != NULL && own_key) > + free((void *) key); > return 0; > + } > > if (strdup_if(&key, key, !own_key) < 0) { > fprintf(stderr, "Couldn't cache %s: %s\n",
This looks like the wrong fix. The one who allocated the key should free it if protolib_cache_maybe_load returns a failure. Thanks, Petr _______________________________________________ Ltrace-devel mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/ltrace-devel
