mirror of
https://github.com/moses-smt/mosesdecoder.git
synced 2024-07-14 14:50:41 +03:00
BUGFIX: fix ScoreComponentCollection::ZeroAll(), affecting MIRA
I observed a bug that ScoreComponentCollection core entries would retain their score even after ZeroAll(). This may have affected the Moses implementation of MIRA. * std::valarray::resize(0) means "resize to 0" [1] * subsequent accesses using operator[] result in undefined behavior [2] FeatureVector::clear() is used by ScoreComponentCollection::ZeroAll(), which in turn was used in these places: ./contrib/mira/Main.cpp:665: cumulativeWeights.ZeroAll(); ./contrib/mira/Main.cpp:666: cumulativeWeightsBinary.ZeroAll(); ./moses/Incremental.cpp:580: features.ZeroAll(); It seems to me that the Moses implementation of MIRA may have been affected? [1] http://www.cplusplus.com/reference/valarray/valarray/resize/ [2] http://www.cplusplus.com/reference/valarray/valarray/operator%5B%5D/
This commit is contained in:
parent
000de1c1dd
commit
b760ad8a7e
@ -175,7 +175,7 @@ void FVector::resize(size_t newsize)
|
||||
|
||||
void FVector::clear()
|
||||
{
|
||||
m_coreFeatures.resize(0);
|
||||
m_coreFeatures.resize(m_coreFeatures.size(), 0);
|
||||
m_features.clear();
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user