Hi, Jürgen,A few months ago, Russ/Russtopia sent me an edif bug that I've only just now had time to look at:
[0] ~/Downloads/apl-1537/src >./apl --noCONT 'libedif.so' ⎕fx 'edif' edif ]DOXY =================================================== SEGMENTATION FAULT ---------------------------------------- -- Stack trace at main.cc:95 ---------------------------------------- 0x7FA5EEFB91E2 __libc_start_main 0x4E784F main 0x691FB5 Workspace::immediate_execution(bool) 0x543B2C Command::process_line() 0x543C93 Command::process_line(UCS_string&) 0x54503D Command::do_APL_command(std::ostream&, UCS_string&) 0x548314 Command::cmd_DOXY(std::ostream&, UCS_string_vector&) 0x53AF2D Doxy::gen() 0x53D95B Doxy::set_call_graph_root(UserFunction const*) 0x7FA5EF6161B0 0x4E667C ======================================== ====================================================Starting apl under gdb, what's happening is that in Doxy.cc(set_call_graph_root):772,
const UserFunction * ufun = fun->get_func_ufun();ufun is getting set to null--it always seems to from Function.hh:177--and then, in Doxy.cc:774,
aliases.push_back(ufun->get_name()); blows up. I noticed that in Executable::clear_body(), const UserFunction * ufun = fun->get_func_ufun(); is followed by if (ufun && ufun->is_lambda())... Patching Doxy.cc with: 773,774c773,777 < nodes.push_back(ufun); < aliases.push_back(ufun->get_name()); --- > if (ufun) > { > nodes.push_back(ufun); > aliases.push_back(ufun->get_name()); > }seems to work make things work, but I don't know if you have any regression tests that test the patch more thoroughly than I can.
Chris
OpenPGP_0xDA6C01938888083E.asc
Description: OpenPGP public key
OpenPGP_signature
Description: OpenPGP digital signature