[GiNaC-devel] Archiving an empty container
Richard B. Kreckel
kreckel at in.terlu.de
Tue Sep 10 10:27:16 CEST 2019
Hi Vladimir,
On 09.09.19 16:07, Vladimir V. Kisil wrote:
> There is an issue with GiNaC archiving an empty container. This
> is illustrated by the code included below. The archived empty list z
> is read in the expression z1 as a list with one element. Also such
> code can crashes id an empty container is archived first.
>
> The reason is in lines 215-216 of container.h: here GiNaC got
> first=last for both: empty containers and containers with one element.
Thanks a lot for researching and reporting this!
> I propose the attached patch, which modifies the return value of
> archive_node::find_last() (called at line 216 of container.h) by 1.
> All other calls of archive_node::find_last() are revised to agree with
> the change.
I'm not convinced that changing archive_node::find_last(name) to return
an iterator to a property beyond the one searched for is the right fix.
It might break existing code. Also, it's not intuitive in the presence
of archive_node::find_first(name). This is not like T::begin() and
T::end() - notice the different naming!
Would it not be better to add something to the interface of class
archive_node, like an empty() function or so?
All my best,
-richy.
--
Richard B. Kreckel
<https://in.terlu.de/~kreckel/>
More information about the GiNaC-devel
mailing list