Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --- a/compile.c 2018-05-13 19:35:50.000000000 -0700
- +++ b/compile.c 2018-05-13 19:34:53.000000000 -0700
- @@ -4569,6 +4569,7 @@
- DECL_ANCHOR(else_seq);
- LABEL *then_label, *else_label, *end_label;
- VALUE branches = 0;
- + int ci_size, ci_kw_size;
- INIT_ANCHOR(cond_seq);
- INIT_ANCHOR(then_seq);
- @@ -4579,8 +4580,20 @@
- compile_branch_condition(iseq, cond_seq, node->nd_cond,
- then_label, else_label);
- + ci_size = iseq->body->ci_size;
- + ci_kw_size = iseq->body->ci_kw_size;
- CHECK(COMPILE_(then_seq, "then", node_body, popped));
- + if (!then_label->refcnt) {
- + iseq->body->ci_size = ci_size;
- + iseq->body->ci_kw_size = ci_kw_size;
- + }
- + ci_size = iseq->body->ci_size;
- + ci_kw_size = iseq->body->ci_kw_size;
- CHECK(COMPILE_(else_seq, "else", node_else, popped));
- + if (!else_label->refcnt) {
- + iseq->body->ci_size = ci_size;
- + iseq->body->ci_kw_size = ci_kw_size;
- + }
- ADD_SEQ(ret, cond_seq);
- @@ -8513,6 +8526,7 @@
- for (i=0; i<ci_kw_size; i++) {
- const struct rb_call_info_kw_arg *kw_arg = dump_ci_kw_entries[i].kw_arg;
- int j;
- + assert(kw_arg != NULL);
- VALUE *keywords = ALLOCA_N(VALUE, kw_arg->keyword_len);
- for (j=0; j<kw_arg->keyword_len; j++) {
- keywords[j] = (VALUE)ibf_dump_object(dump, kw_arg->keywords[j]); /* kw_arg->keywords[n] is Symbol */
- @@ -8622,7 +8636,15 @@
- rb_raise(rb_eRuntimeError, "path object size mismatch");
- }
- path = rb_fstring(RARRAY_AREF(pathobj, 0));
- - realpath = rb_fstring(RARRAY_AREF(pathobj, 1));
- + realpath = RARRAY_AREF(pathobj, 1);
- + if (!NIL_P(realpath)) {
- + if (!RB_TYPE_P(realpath, T_STRING)) {
- + rb_raise(rb_eArgError, "unexpected realpath %"PRIxVALUE
- + "(%x), path=%+"PRIsVALUE,
- + realpath, TYPE(realpath), path);
- + }
- + realpath = rb_fstring(realpath);
- + }
- }
- else {
- rb_raise(rb_eRuntimeError, "unexpected path object");
Add Comment
Please, Sign In to add comment