Index: src/libchcore/TSharedModificationTracker.h =================================================================== diff -u -N -ra5aa3c3cb78f3767641de2627d1a49a1dc35b429 -rb193a95402f2bf4c456fb9d65d111caaf6994823 --- src/libchcore/TSharedModificationTracker.h (.../TSharedModificationTracker.h) (revision a5aa3c3cb78f3767641de2627d1a49a1dc35b429) +++ src/libchcore/TSharedModificationTracker.h (.../TSharedModificationTracker.h) (revision b193a95402f2bf4c456fb9d65d111caaf6994823) @@ -38,9 +38,15 @@ m_tValue(rSrc.m_tValue), m_rBitset(rSrc.m_rBitset) { - m_rBitset[ChangeBit] = true; } + TSharedModificationTracker(const TSharedModificationTracker& rSrc, Bitset& rBitset) : + m_tValue(rSrc.m_tValue), + m_rBitset(rBitset) + { + m_rBitset[ChangeBit] = rBitset[ChangeBit]; + } + template TSharedModificationTracker(Bitset& rBitset, const V& rValue) : m_tValue(rValue), @@ -54,7 +60,8 @@ if(this != &rValue) { m_tValue = rValue.m_tValue; - m_rBitset = rValue.m_rBitset; + if(m_tValue != rValue.m_tValue) + m_rBitset[ChangeBit] = true; } return *this;