From 722327e4b83e29f424bd8eebd4c15913d12815fd Mon Sep 17 00:00:00 2001 From: Thomas Schmitt Date: Sat, 12 Feb 2011 14:48:31 +0100 Subject: [PATCH] Overwriting eventually existing cloner of iso_node_xinfo_func with iso_node_xinfo_make_clonable(). --- libisofs/messages.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/libisofs/messages.c b/libisofs/messages.c index 13a9442..dd35591 100644 --- a/libisofs/messages.c +++ b/libisofs/messages.c @@ -97,15 +97,20 @@ int iso_node_xinfo_make_clonable(iso_node_xinfo_func proc, { struct iso_xinfo_cloner_assoc *assoc; - /* >>> look for existing assoc of proc */; + /* Look for existing assoc of proc */ + for (assoc = iso_xinfo_cloner_list; assoc != NULL; assoc = assoc->next) + if (assoc->proc == proc) + break; - assoc = calloc(1, sizeof(struct iso_xinfo_cloner_assoc)); - if (assoc == NULL) - return ISO_OUT_OF_MEM; - assoc->proc = proc; + if (assoc == NULL) { + assoc = calloc(1, sizeof(struct iso_xinfo_cloner_assoc)); + if (assoc == NULL) + return ISO_OUT_OF_MEM; + assoc->proc = proc; + assoc->next = iso_xinfo_cloner_list; + iso_xinfo_cloner_list = assoc; + } assoc->cloner = cloner; - assoc->next = iso_xinfo_cloner_list; - iso_xinfo_cloner_list = assoc; return ISO_SUCCESS; }