diff --git a/ndb/src/ndbapi/NdbDictionaryImpl.cpp b/ndb/src/ndbapi/NdbDictionaryImpl.cpp index b221966896e..fd90b2b9ee3 100644 --- a/ndb/src/ndbapi/NdbDictionaryImpl.cpp +++ b/ndb/src/ndbapi/NdbDictionaryImpl.cpp @@ -596,26 +596,32 @@ static int f_dictionary_count = 0; NdbDictionaryImpl::~NdbDictionaryImpl() { NdbElement_t * curr = m_localHash.m_tableHash.getNext(0); - while(curr != 0){ - m_globalHash->lock(); - m_globalHash->release(curr->theData); - m_globalHash->unlock(); + if(m_globalHash){ + while(curr != 0){ + m_globalHash->lock(); + m_globalHash->release(curr->theData); + m_globalHash->unlock(); + + curr = m_localHash.m_tableHash.getNext(curr); + } - curr = m_localHash.m_tableHash.getNext(curr); + m_globalHash->lock(); + if(--f_dictionary_count == 0){ + delete NdbDictionary::Column::FRAGMENT; + delete NdbDictionary::Column::ROW_COUNT; + delete NdbDictionary::Column::COMMIT_COUNT; + NdbDictionary::Column::FRAGMENT= 0; + NdbDictionary::Column::ROW_COUNT= 0; + NdbDictionary::Column::COMMIT_COUNT= 0; + } + m_globalHash->unlock(); + } else { + assert(curr == 0); } - - m_globalHash->lock(); - if(--f_dictionary_count == 0){ - delete NdbDictionary::Column::FRAGMENT; - delete NdbDictionary::Column::ROW_COUNT; - delete NdbDictionary::Column::COMMIT_COUNT; - NdbDictionary::Column::FRAGMENT= 0; - NdbDictionary::Column::ROW_COUNT= 0; - NdbDictionary::Column::COMMIT_COUNT= 0; - } - m_globalHash->unlock(); } + + #if 0 bool NdbDictionaryImpl::setTransporter(class TransporterFacade * tf)