diff options
| author | Yukihiro Matsumoto <[email protected]> | 2012-10-16 22:24:40 +0900 |
|---|---|---|
| committer | Yukihiro Matsumoto <[email protected]> | 2012-10-16 22:24:40 +0900 |
| commit | f2da76b6ef3c0d96fa8b1526f96d0037a9411879 (patch) | |
| tree | b25ece7c22266d2dacc7eb2d735f9aac5ad212c9 /src | |
| parent | 1bf70ea255a36fc6ff0991c1ac05cb0f44df8ce1 (diff) | |
| download | mruby-f2da76b6ef3c0d96fa8b1526f96d0037a9411879.tar.gz mruby-f2da76b6ef3c0d96fa8b1526f96d0037a9411879.zip | |
register number adjustment for case statement was wrong; close #487
Diffstat (limited to 'src')
| -rw-r--r-- | src/codegen.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/codegen.c b/src/codegen.c index 50d3e3d3b..0077f5593 100644 --- a/src/codegen.c +++ b/src/codegen.c @@ -1200,17 +1200,17 @@ codegen(codegen_scope *s, node *tree, int val) genop(s, MKOP_sBx(OP_JMP, 0)); dispatch_linked(s, pos2); } - pop(); + pop(); /* pop HEAD */ codegen(s, tree->car->cdr, val); - pop(); + if (val) pop(); tmp = new_label(s); genop(s, MKOP_sBx(OP_JMP, pos3)); pos3 = tmp; if (pos1) dispatch(s, pos1); tree = tree->cdr; - push(); + push(); /* push HEAD */ } - pop(); + pop(); /* pop HEAD */ genop(s, MKOP_A(OP_LOADNIL, cursp())); if (val) push(); if (pos3) dispatch_linked(s, pos3); |
