Specify that the default initialization must always be done for CDOhash_map's data...
authorTim King <taking@google.com>
Fri, 23 Oct 2015 22:35:57 +0000 (15:35 -0700)
committerTim King <taking@google.com>
Sat, 24 Oct 2015 02:13:32 +0000 (19:13 -0700)
commit3a67d649379f20000b2416b02860aa057ac38607
treea19d644a8f025303693ee3d504082de11f2359ef
parentc9b7de773cdc53044e5cf4a55d4893d2be476b60
Specify that the default initialization must always be done for CDOhash_map's data field. Without doing this, there exists a loop where uninitialized data can be read. This can happen if T is a type like bool. The trace goes: CDOhash_map::set(data) calls ContextObj::make_current(). Now (d_pScope->isCurrent()) is false. So ContextObj::make_current() calls ContextObj::update(). ContextObj::update() calls CDOhash_map::save(). CDOhash_map::save() calls return new(pCMM) CDOhash_map(*this) which calls the copy constructor which reads the data using d_data(other.d_data).
src/context/cdhashmap.h