Fix bug for ADDMOD and ADDMUL where program would not continue

This commit is contained in:
nicksavers 2014-10-09 17:50:36 +02:00
parent 65ca63e037
commit 1612ec6a1b
2 changed files with 6 additions and 1 deletions

View File

@ -479,6 +479,7 @@ public class VM {
word1.add(program.stackPop()); word1.add(program.stackPop());
word1.mod(program.stackPop()); word1.mod(program.stackPop());
program.stackPush(word1); program.stackPush(word1);
program.step();
} break; } break;
case MULMOD:{ case MULMOD:{
program.stackRequire(3); program.stackRequire(3);
@ -486,6 +487,7 @@ public class VM {
word1.mul(program.stackPop()); word1.mul(program.stackPop());
word1.mod(program.stackPop()); word1.mod(program.stackPop());
program.stackPush(word1); program.stackPush(word1);
program.step();
} break; } break;
/** /**

View File

@ -1852,13 +1852,14 @@ public class VMTest {
DataWord item1 = program.stack.pop(); DataWord item1 = program.stack.pop();
program.getResult().getRepository().close(); program.getResult().getRepository().close();
assertTrue(program.isStopped());
assertEquals(s_expected_1, Hex.toHexString(item1.getData()).toUpperCase()); assertEquals(s_expected_1, Hex.toHexString(item1.getData()).toUpperCase());
} }
@Test // ADDMOD OP @Test // ADDMOD OP
public void testADDMOD_2() { public void testADDMOD_2() {
VM vm = new VM(); VM vm = new VM();
Program program = new Program(Hex.decode("611000600261100214"), new ProgramInvokeMockImpl()); Program program = new Program(Hex.decode("6110006002611002146000"), new ProgramInvokeMockImpl());
String s_expected_1 = "0000000000000000000000000000000000000000000000000000000000000004"; String s_expected_1 = "0000000000000000000000000000000000000000000000000000000000000004";
vm.step(program); vm.step(program);
@ -1868,6 +1869,7 @@ public class VMTest {
DataWord item1 = program.stack.pop(); DataWord item1 = program.stack.pop();
program.getResult().getRepository().close(); program.getResult().getRepository().close();
assertFalse(program.isStopped());
assertEquals(s_expected_1, Hex.toHexString(item1.getData()).toUpperCase()); assertEquals(s_expected_1, Hex.toHexString(item1.getData()).toUpperCase());
} }
@ -1884,6 +1886,7 @@ public class VMTest {
DataWord item1 = program.stack.pop(); DataWord item1 = program.stack.pop();
program.getResult().getRepository().close(); program.getResult().getRepository().close();
assertTrue(program.isStopped());
assertEquals(s_expected_1, Hex.toHexString(item1.getData()).toUpperCase()); assertEquals(s_expected_1, Hex.toHexString(item1.getData()).toUpperCase());
} }