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

Attachment: OpenPGP_0xDA6C01938888083E.asc
Description: OpenPGP public key

Attachment: OpenPGP_signature
Description: OpenPGP digital signature

Reply via email to