Daniel Russel wrote:
> In addition, changing AttributeTable.h::remove_always to the following
> void remove_always(Key k) {
> IMP_assert(k != Key(), "Can't remove default key");
> if (k.get_index() < map_.size()) {
> map_[k.get_index()]= Traits::get_invalid();
> /*while (!map_.empty()
> && map_.back()== Traits::get_invalid()) map_.pop_back();*/
> }
> }
>
> (that is, removing the cleanup loop), makes the problem go away. I think
> the line is OK, so it is all a bit disturbing.
The code also looks fine to me, but certainly appears to be the culprit.
I replaced it with an uglier use of erase(), which seems to work.
Perhaps an MSVC bug or some hidden corruption elsewhere in the code. If
the latter, I guess we'll find it eventually.
> BTW, I stumbled upon the msdn page talking about the the /EH flag for
> visual studio. Do we need to build with /EH to get things cleaned up
> properly when we throw exceptions?
We already build with /GX, which is the same as /EHsc, and I think
that's sufficient.
> It also would perhaps be useful to have the debug version of the C++
> runtime available for the tests.
True - I'll look into that.
Ben
--
ben@salilab.orghttp://salilab.org/~ben/
"It is a capital mistake to theorize before one has data."
- Sir Arthur Conan Doyle