From eff0cd3a467d638908b77afc0c50a0a760a351a1 Mon Sep 17 00:00:00 2001 From: svost Date: Tue, 10 May 2016 15:42:08 +0300 Subject: [PATCH] From bitcoin https://github.com/bitcoin/bitcoin/pull/7907 --- src/script.cpp | 14 +++++++++++--- 1 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/script.cpp b/src/script.cpp index bd58210..6e25fb3 100644 --- a/src/script.cpp +++ b/src/script.cpp @@ -2246,17 +2246,25 @@ int CScript::FindAndDelete(const CScript& b) int nFound = 0; if (b.empty()) return nFound; - iterator pc = begin(); + CScript result; + iterator pc = begin(), pc2 = begin(); opcodetype opcode; do { - while (end() - pc >= (long)b.size() && memcmp(&pc[0], &b[0], b.size()) == 0) + result.insert(result.end(), pc2, pc); + while (static_cast(end() - pc) >= b.size() && equal(b.begin(), b.end(), pc)) { - erase(pc, pc + b.size()); + pc = pc + b.size(); ++nFound; } + pc2 = pc; } while (GetOp(pc, opcode)); + + if (nFound > 0) { + result.insert(result.end(), pc2, end()); + *this = result; + } return nFound; } -- 1.7.1