From 3b905588b50156c71ac81d872bfb25b6d783aec3 Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Sun, 13 Jan 2013 17:47:29 -0800 Subject: [PATCH] Make create after delete officially legal. --- src/cpp/ripple/LedgerEntrySet.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/cpp/ripple/LedgerEntrySet.cpp b/src/cpp/ripple/LedgerEntrySet.cpp index 18780f1de8..5b6b926d63 100644 --- a/src/cpp/ripple/LedgerEntrySet.cpp +++ b/src/cpp/ripple/LedgerEntrySet.cpp @@ -135,16 +135,17 @@ void LedgerEntrySet::entryCreate(SLE::ref sle) return; } - assert(it->second.mSeq == mSeq); - switch (it->second.mAction) { - case taaMODIFY: - throw std::runtime_error("Create after modify"); case taaDELETE: - throw std::runtime_error("Create after delete"); // We could make this a modify + it->second.mEntry = sle; + it->second.mAction = taaMODIFY; + it->second.mSeq = mSeq; + break; + case taaMODIFY: + throw std::runtime_error("Create after modify"); case taaCREATE: throw std::runtime_error("Create after create"); // We could make this work @@ -154,6 +155,8 @@ void LedgerEntrySet::entryCreate(SLE::ref sle) default: throw std::runtime_error("Unknown taa"); } + + assert(it->second.mSeq == mSeq); } void LedgerEntrySet::entryModify(SLE::ref sle) @@ -173,6 +176,8 @@ void LedgerEntrySet::entryModify(SLE::ref sle) case taaCACHED: it->second.mAction = taaMODIFY; fallthru(); + + case taaCREATE: case taaMODIFY: it->second.mSeq = mSeq; it->second.mEntry = sle; @@ -181,11 +186,6 @@ void LedgerEntrySet::entryModify(SLE::ref sle) case taaDELETE: throw std::runtime_error("Modify after delete"); - case taaCREATE: - it->second.mSeq = mSeq; - it->second.mEntry = sle; - break; - default: throw std::runtime_error("Unknown taa"); }