From bitcoin https://github.com/bitcoin/bitcoin/pull/7907 348/head
authorsvost <ya.nowa@yandex.ru>
Tue, 10 May 2016 12:42:08 +0000 (15:42 +0300)
committersvost <ya.nowa@yandex.ru>
Tue, 10 May 2016 12:42:08 +0000 (15:42 +0300)
src/script.cpp

index bd58210..6e25fb3 100644 (file)
@@ -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<size_t>(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;
 }