|
From: | Dr . Jürgen Sauermann |
Subject: | Re: ]DOXY bug |
Date: | Fri, 11 Mar 2022 17:00:20 +0100 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.13.0 |
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 --noCONTStarting apl under gdb, what's happening is that in Doxy.cc(set_call_graph_root):772,
'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
========================================
====================================================
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
[Prev in Thread] | Current Thread | [Next in Thread] |