diff --git a/Control/StoreGate/src/SGHiveMgrSvc.cxx b/Control/StoreGate/src/SGHiveMgrSvc.cxx index 5927ac513a91148683202f5d0f8475dfc63973ac..2fe5815d1f97478e5a8c8cb2cea2153d94ae7a19 100644 --- a/Control/StoreGate/src/SGHiveMgrSvc.cxx +++ b/Control/StoreGate/src/SGHiveMgrSvc.cxx @@ -155,7 +155,20 @@ bool HiveMgrSvc::exists( const DataObjID& id) { // don't care if it's slow std::string key = id.key(); key.erase(0,key.find("+")+1); - return m_hiveStore->transientContains(id.clid(), id.key()); + + if (id.clid() == 0) { + // this is an ugly hack in case the DataObjID gets munged + // upstream, and we have to re-separate it into (class,key) + // from "class/key" + std::string cl = id.fullKey(); + cl.erase(cl.find("/"),cl.length()); + + DataObjID d2(cl,key); + return m_hiveStore->transientContains(d2.clid(), key); + } else { + return m_hiveStore->transientContains(id.clid(), key); + } + } StatusCode HiveMgrSvc::initialize() {