From 83f7bd50714e120bb921d723b1305c02e2abd1ec Mon Sep 17 00:00:00 2001 From: Jianping Wu Date: Wed, 31 Oct 2018 19:24:54 -0700 Subject: [PATCH] Fixed tuple const valtype& crash issues. --- src/keva/common.cpp | 2 ++ src/keva/common.h | 6 +++--- src/keva/main.cpp | 4 ++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/keva/common.cpp b/src/keva/common.cpp index ec0aeae84..a9651ed67 100644 --- a/src/keva/common.cpp +++ b/src/keva/common.cpp @@ -227,6 +227,8 @@ CKevaCache::remove(const valtype& nameSpace, const valtype& key) if (ei != entries.end ()) entries.erase (ei); + //JWU TODO: make sure to remove namespace registration when + // the corresponding block is disconnected!!! #if 0 deleted.insert(name); #endif diff --git a/src/keva/common.h b/src/keva/common.h index ce1335074..eaaa62896 100644 --- a/src/keva/common.h +++ b/src/keva/common.h @@ -287,8 +287,8 @@ private: class NameComparator { public: - inline bool operator() (const std::tuple a, - const std::tuple b) const + inline bool operator() (const std::tuple a, + const std::tuple b) const { unsigned int aSize = std::get<0>(a).size() + std::get<1>(a).size(); unsigned int bSize = std::get<0>(b).size() + std::get<1>(b).size(); @@ -378,7 +378,7 @@ public: * Type of name entry map. This is public because it is also used * by the unit tests. */ - typedef std::map, CKevaData, NameComparator> EntryMap; + typedef std::map, CKevaData, NameComparator> EntryMap; typedef std::set NamespaceSet; private: diff --git a/src/keva/main.cpp b/src/keva/main.cpp index bd73a8d88..f5a941d87 100644 --- a/src/keva/main.cpp +++ b/src/keva/main.cpp @@ -143,7 +143,7 @@ CKevaMemPool::check(const CCoinsView& coins) const nHeight = mapBlockIndex.find (blockHash)->second->nHeight; std::set nameRegs; - std::set> namespaceKeyUpdates; + std::set> namespaceKeyUpdates; for (const auto& entry : pool.mapTx) { const uint256 txHash = entry.GetTx ().GetHash (); if (entry.isNamespaceRegistration()) { @@ -168,7 +168,7 @@ CKevaMemPool::check(const CCoinsView& coins) const if (entry.isNamespaceKeyUpdate()) { const valtype& nameSpace = entry.getNamespace(); const valtype& key = entry.getKey(); - std::tuple tuple(nameSpace, key); + std::tuple tuple(nameSpace, key); const NamespaceKeyTxMap::const_iterator mit = mapNamespaceKeyUpdates.find(tuple); assert (mit != mapNamespaceKeyUpdates.end ()); assert (mit->second == txHash);