summaryrefslogtreecommitdiff
path: root/ndb/src/ndbapi/NdbDictionaryImpl.cpp
diff options
context:
space:
mode:
authorunknown <joreland@mysql.com>2004-09-08 06:48:03 +0200
committerunknown <joreland@mysql.com>2004-09-08 06:48:03 +0200
commitd7773916cae631ebaa7282bb8889b0bd30411780 (patch)
tree6a75a1e76677b9f9e818365b3274ca5488bb33d6 /ndb/src/ndbapi/NdbDictionaryImpl.cpp
parent7fa2b4ef4e1d00f43f339c38bd1e12fe91698b29 (diff)
downloadmariadb-git-d7773916cae631ebaa7282bb8889b0bd30411780.tar.gz
bug#at - testNdbApi WaitUntilReady, MaxNdb
fix delete of dictionary before connection has been established ndb/src/ndbapi/NdbDictionaryImpl.cpp: fix delete of dictionary before connection has been established
Diffstat (limited to 'ndb/src/ndbapi/NdbDictionaryImpl.cpp')
-rw-r--r--ndb/src/ndbapi/NdbDictionaryImpl.cpp36
1 files changed, 21 insertions, 15 deletions
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<NdbTableImpl> * curr = m_localHash.m_tableHash.getNext(0);
- while(curr != 0){
+ if(m_globalHash){
+ while(curr != 0){
+ m_globalHash->lock();
+ m_globalHash->release(curr->theData);
+ m_globalHash->unlock();
+
+ curr = m_localHash.m_tableHash.getNext(curr);
+ }
+
m_globalHash->lock();
- m_globalHash->release(curr->theData);
+ 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();
-
- 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;
+ } else {
+ assert(curr == 0);
}
- m_globalHash->unlock();
}
+
+
#if 0
bool
NdbDictionaryImpl::setTransporter(class TransporterFacade * tf)