From 37fa201e8f1af10d5921a9fdaf572ac52f5b538f Mon Sep 17 00:00:00 2001 From: nobu Date: Wed, 22 Aug 2018 16:02:03 +0000 Subject: compile.c: pop literal object in condition * compile.c (compile_branch_condition): pop dynamic literal object, which is never nil/false, as the branch condition. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64512 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- compile.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/compile.c b/compile.c index efa001a7d4..2631a97aed 100644 --- a/compile.c +++ b/compile.c @@ -3717,6 +3717,13 @@ compile_branch_condition(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *co /* printf("useless condition eliminate (%s)\n", ruby_node_name(nd_type(cond))); */ ADD_INSNL(ret, nd_line(cond), jump, else_label); break; + case NODE_ARRAY: + case NODE_ARGSCAT: + case NODE_DREGX: + case NODE_DSTR: + CHECK(COMPILE_POPPED(ret, "branch condition", cond)); + ADD_INSNL(ret, nd_line(cond), jump, then_label); + break; case NODE_FLIP2: CHECK(compile_flip_flop(iseq, ret, cond, TRUE, then_label, else_label)); break; -- cgit v1.2.3