diff --git a/src/Makefile.test.include b/src/Makefile.test.include --- a/src/Makefile.test.include +++ b/src/Makefile.test.include @@ -50,8 +50,8 @@ test/blockindex_tests.cpp \ test/blockstatus_tests.cpp \ test/bloom_tests.cpp \ + test/bswap_opcode_tests.cpp \ test/bswap_tests.cpp \ - test/byteswap_tests.cpp \ test/cashaddr_tests.cpp \ test/cashaddrenc_tests.cpp \ test/checkdatasig_tests.cpp \ diff --git a/src/qt/test/compattests.cpp b/src/qt/test/compattests.cpp --- a/src/qt/test/compattests.cpp +++ b/src/qt/test/compattests.cpp @@ -16,7 +16,7 @@ #include void CompatTests::bswapTests() { - // Sibling in bitcoin/src/test/byteswap_tests.cpp + // Sibling in bitcoin/src/test/bswap_tests.cpp uint16_t u1 = 0x1234; uint32_t u2 = 0x56789abc; uint64_t u3 = 0xdef0123456789abc; diff --git a/src/script/interpreter.cpp b/src/script/interpreter.cpp --- a/src/script/interpreter.cpp +++ b/src/script/interpreter.cpp @@ -1235,6 +1235,22 @@ stacktop(-1) = std::move(n2); } break; + case OP_BSWAP: { + if (!(flags & SCRIPT_ENABLE_OP_BSWAP)) { + return set_error(serror, ScriptError::BAD_OPCODE); + } + + // (in -- out) + if (stack.size() < 1) { + return set_error( + serror, ScriptError::INVALID_STACK_OPERATION); + } + + valtype &data = stacktop(-1); + + std::reverse(data.begin(), data.end()); + } break; + // // Conversion operations // @@ -1300,22 +1316,6 @@ } } break; - case OP_BSWAP: { - if (!(flags & SCRIPT_ENABLE_OP_BSWAP)) { - return set_error(serror, ScriptError::BAD_OPCODE); - } - - // (in -- out) - if (stack.size() < 1) { - return set_error( - serror, ScriptError::INVALID_STACK_OPERATION); - } - - valtype &data = stacktop(-1); - - std::reverse(data.begin(), data.end()); - } break; - default: return set_error(serror, ScriptError::BAD_OPCODE); } diff --git a/src/test/CMakeLists.txt b/src/test/CMakeLists.txt --- a/src/test/CMakeLists.txt +++ b/src/test/CMakeLists.txt @@ -72,8 +72,8 @@ blockindex_tests.cpp blockstatus_tests.cpp bloom_tests.cpp + bswap_opcode_tests.cpp bswap_tests.cpp - byteswap_tests.cpp cashaddr_tests.cpp cashaddrenc_tests.cpp checkdatasig_tests.cpp diff --git a/src/test/bswap_opcode_tests.cpp b/src/test/bswap_opcode_tests.cpp new file mode 100644 --- /dev/null +++ b/src/test/bswap_opcode_tests.cpp @@ -0,0 +1,128 @@ +// Copyright (c) 2020 The Bitcoin developers +// Distributed under the MIT software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + +#include