Skip to content

Commit 3ce6118

Browse files
authored
Fix try-catch: save c1, c3 to catch continuation (#1332)
1 parent a5f1f7d commit 3ce6118

File tree

2 files changed

+5
-1
lines changed

2 files changed

+5
-1
lines changed

crypto/func/codegen.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -830,6 +830,8 @@ bool Op::generate_code_step(Stack& stack) {
830830
catch_stack.push_new_var(left[1]);
831831
stack.rearrange_top(catch_vars, catch_last);
832832
stack.opt_show();
833+
stack.o << "c1 PUSH";
834+
stack.o << "c3 PUSH";
833835
stack.o << "c4 PUSH";
834836
stack.o << "c5 PUSH";
835837
stack.o << "c7 PUSH";
@@ -846,6 +848,8 @@ bool Op::generate_code_step(Stack& stack) {
846848
stack.o << "c7 SETCONT";
847849
stack.o << "c5 SETCONT";
848850
stack.o << "c4 SETCONT";
851+
stack.o << "c3 SETCONT";
852+
stack.o << "c1 SETCONT";
849853
for (size_t begin = catch_vars.size(), end = begin; end > 0; end = begin) {
850854
begin = end >= block_size ? end - block_size : 0;
851855
stack.o << std::to_string(end - begin) + " PUSHINT";

crypto/func/func.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ extern std::string generated_from;
4545

4646
constexpr int optimize_depth = 20;
4747

48-
const std::string func_version{"0.4.5"};
48+
const std::string func_version{"0.4.6"};
4949

5050
enum Keyword {
5151
_Eof = -1,

0 commit comments

Comments
 (0)