[GiNaC-devel] Archiving an empty container

Vladimir V. Kisil kisilv at maths.leeds.ac.uk
Tue Sep 10 12:19:48 CEST 2019


	Dear Richard,

	Thanks for commenting on the previous patch, I appreciate the
  point on preserving return values of public methods.

  I am attaching an another patch using an additional method. It is as
  close to the standard checks (it != list.end()) as I can imagine.

  Best wishes,
  Vladimir
-- 
Vladimir V. Kisil                 http://www.maths.leeds.ac.uk/~kisilv/
  Book:     Geometry of Mobius Transformations     http://goo.gl/EaG2Vu
  Software: Geometry of cycles          http://moebinv.sourceforge.net/
  Jupyter (Colab):         https://github.com/vvkisil/MoebInv-notebooks
  Jupyter (CodeOcean):            http://doi.org/10.24433/CO.9934595.v2
>>>>> On Tue, 10 Sep 2019 10:27:16 +0200, "Richard B. Kreckel" <kreckel at in.terlu.de> said:

    RK> 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.

    RK> 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.

    RK> I'm not convinced that changing archive_node::find_last(name) to
    RK> return an iterator to a property beyond the one searched for is
    RK> the right fix.

    RK> It might break existing code. Also, it's not intuitive in the
    RK> presence of archive_node::find_first(name). This is not like
    RK> T::begin() and T::end() - notice the different naming!

    RK> Would it not be better to add something to the interface of
    RK> class archive_node, like an empty() function or so?

    RK> All my best, -richy.  -- Richard B. Kreckel
    RK> <https://in.terlu.de/~kreckel/>
    RK> _______________________________________________ GiNaC-devel
    RK> mailing list GiNaC-devel at ginac.de
    RK> https://www.cebix.net/mailman/listinfo/ginac-devel

-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Add-archive_node-is_within_props-methods.patch
Type: text/x-diff
Size: 3162 bytes
Desc: Additional function and fixing emty containers
URL: <http://www.ginac.de/pipermail/ginac-devel/attachments/20190910/2f021420/attachment.bin>
-------------- next part --------------
  


More information about the GiNaC-devel mailing list