Changeset View
Changeset View
Standalone View
Standalone View
src/script/interpreter.cpp
Show First 20 Lines • Show All 1,246 Lines • ▼ Show 20 Lines | try { | ||||
// | // | ||||
// Byte string operations | // Byte string operations | ||||
// | // | ||||
case OP_CAT: { | case OP_CAT: { | ||||
if (!fEnabledOpCodesMonolith) { | if (!fEnabledOpCodesMonolith) { | ||||
// Disabled opcodes. | // Disabled opcodes. | ||||
return set_error(serror, SCRIPT_ERR_DISABLED_OPCODE); | return set_error(serror, SCRIPT_ERR_DISABLED_OPCODE); | ||||
} | } | ||||
// (x1 x2 -- out) | |||||
if (stack.size() < 2) { | |||||
return set_error( | |||||
serror, SCRIPT_ERR_INVALID_STACK_OPERATION); | |||||
} | |||||
valtype &vch1 = stacktop(-2); | |||||
valtype &vch2 = stacktop(-1); | |||||
if (vch1.size() + vch2.size() > MAX_SCRIPT_ELEMENT_SIZE) { | |||||
return set_error(serror, SCRIPT_ERR_PUSH_SIZE); | |||||
} | |||||
vch1.insert(vch1.end(), vch2.begin(), vch2.end()); | |||||
stack.pop_back(); | |||||
} break; | } break; | ||||
case OP_SPLIT: { | case OP_SPLIT: { | ||||
if (!fEnabledOpCodesMonolith) { | if (!fEnabledOpCodesMonolith) { | ||||
// Disabled opcodes. | // Disabled opcodes. | ||||
return set_error(serror, SCRIPT_ERR_DISABLED_OPCODE); | return set_error(serror, SCRIPT_ERR_DISABLED_OPCODE); | ||||
} | } | ||||
} break; | } break; | ||||
▲ Show 20 Lines • Show All 470 Lines • Show Last 20 Lines |