SDAG: ensure that necessary data structure is initialized
authorPhil Miller <mille121@illinois.edu>
Wed, 10 Oct 2012 00:31:08 +0000 (19:31 -0500)
committerPhil Miller <mille121@illinois.edu>
Wed, 10 Oct 2012 00:31:08 +0000 (19:31 -0500)
commit7ab41baaa34ca77e663fd82deae2033b85aec614
tree4009bb21d50bcd9d3e1781f50b439ef89cef6950
parenta5007b7bf65b2c4862f28f89d914481e45c38d7b
SDAG: ensure that necessary data structure is initialized

The __cDep structure that SDAG depends on to track the dependencies and state
was not being initialized in some edge cases. Fix them by having every declared
SDAG entry method (either top-level or when-defined) check and initialize this
if it's missing.

In the case of a chare class constructor calling some SDAG method on itself
from the constructor, the surrounding generated method's call to
impl_obj->_sdag_init() won't have happened yet. In the case of inheritance from
a class with SDAG code, the generated code that would have called _sdag_init()
was never running. Incidentally, this may enable SDAG to function for classes
with SDAG content at multiple levels of their inheritance hierarchy.

The change to auto_ptr is necessary because the bare pointer was being
value-initialized in some cases, and could thus be non-NULL junk that would
pass the test.
src/xlat-i/sdag/CEntry.C
src/xlat-i/sdag/CParsedFile.C
src/xlat-i/sdag/CSdagConstruct.C
src/xlat-i/xi-symbol.C