From 548e838faa246debe37a431244f6c577efbb044a Mon Sep 17 00:00:00 2001 From: Martin Stjernholm <mast@lysator.liu.se> Date: Sun, 13 Mar 2011 15:43:56 +0100 Subject: [PATCH] Improved unregister() to find stuff in joinnodes a bit better. --- lib/master.pike.in | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/lib/master.pike.in b/lib/master.pike.in index 1f08aa5e50..771505bfd4 100644 --- a/lib/master.pike.in +++ b/lib/master.pike.in @@ -1952,10 +1952,16 @@ void unregister(program p) else programs[fname] = no_value; + string name = program_path_to_name (fname); + mixed n = has_value (name, ".") ? + resolv ((name / ".")[..<1] * ".") : + get_root_module(); + if (objectp (n) && (n->is_resolv_dirnode || n->is_resolv_joinnode)) + n->delete_value (p); + fname = dirname (fname); - object n; if ( fname!="" && objectp (n = fc[fname]) ) - if (n->is_resolv_dirnode || n->is_resolv_joinnode) + if (n->is_resolv_dirnode) // Won't find joinnodes in fc. n->delete_value (p); } @@ -1971,7 +1977,7 @@ void unregister(program p) else fc[name] = no_value; - // FIXME: Delete from caches in dirnodes and joinnodes. + // FIXME: What about compat handlers? } protected program findprog(string pname, -- GitLab