Where: trunk #286.
Detected: branches/x64 #291.
Instructions to reproduce: build vs2008 solution in Test/x64 or Release/x64 platform configuration and run test in one of those configurations. Test test/dense_sparse_polynom.cpp will crash in Arageli::vector::erase(iterator, iterator).
Results of the investigation.
Iterators are used in this function after unique() called for the vector, so iterators become invalid in general case. This bug appears in x64 but it is still an ill-formed C++ code in all cases and should be fixed. This bug can lead to absolutelly unpredictable results including quiet wrong calculations.
TODO: Review other parts of the library to catch all similar cases of unique() and iterators usage.
See related feature request #2994964 about tests for this bug.
Needs additional clarification. Possibly it won't be fixed.
It should be clarified that user cannot make a copy of object between obtaining non-const iterator for that object and use of that iterator for all objects with reference counter enabled. User cannot do it without at least making additional step; call unique for all copies were made.
Results of additional investigation: this failure caused by buggy VS2008 debugging iterator feature (IMO). Calling unique in a proper or not proper way can do nothing with this -- it seems to be just a glitch of Vs2008.
Fixed at trunk #318.
Since release 2.2.8 will have never been issued, moved forward to 2.2.9.
It still unclear whether there is a bug here -- decreased priority.