# Patch for \[ruby-core:14537\]

**URL:** <https://www.ruby-forum.com/t/patch-for-ruby-core-14537/134269>\
**Category:** Development\
**Created:** [April 9, 2008, 12:21pm UTC](https://www.ruby-forum.com/t/patch-for-ruby-core-14537/134269 "2008-04-09T12:21:21Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![wanabe](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/51bf81/32.png) [@wanabe](https://www.ruby-forum.com/u/wanabe)\
**Post date:** [April 9, 2008, 12:21pm UTC](https://www.ruby-forum.com/t/patch-for-ruby-core-14537/134269/1 "2008-04-09T12:21:21Z")

</div>

e$B%o%J%Y$H?=$7$^$9!#e(B

[ruby-core:14537]e$B$KBP$9$k%Q%C%A$r=q$-$^$7$?!#e(B  
rescue e$B$N0z?t$KG[Ns$NE83+$r5v$9$h$&$K$7$^$7$?!#e(B

# Index: compile.c

— compile.c (revision 15910)  
+++ compile.c (working copy)  
@@ -3211,11 +3211,27 @@

```
   narg = resq->nd_args;
   while (narg) {

```

- COMPILE(ret, “rescue arg”, narg-\>nd\_head);
- ADD\_INSN2(ret, nd\_line(node), getdynamic, INT2FIX(1),
- 

```
   INT2FIX(0));

```

- ADD\_SEND(ret, nd\_line(node), ID2SYM(idEqq), INT2FIX(1));
- ADD\_INSNL(ret, nd\_line(node), branchif, label\_hit);

- if (nd\_type(narg) == NODE\_SPLAT ||
- 

```
   nd_type(narg) == NODE_ARGSCAT) {

```

- 

```
   ADD_INSN2(ret, nd_line(node), getdynamic, INT2FIX(1),

```

- 

```
       INT2FIX(0));

```

- 

```
   COMPILE(ret, "rescue arg", narg->nd_head);

```

- 

```
   if (nd_type(narg) == NODE_ARGSCAT) {

```

- 

```
 COMPILE(ret, "rescue argscat", narg->nd_body);

```

- 

```
 ADD_INSN(ret, nd_line(node), concatarray);

```

- 

```
   }

```

- 

```
   ADD_INSN1(ret, nd_line(node), checkincludearray, Qtrue);

```

- 

```
   ADD_INSN(ret, nd_line(node), swap);

```

- 

```
   ADD_INSN(ret, nd_line(node), pop);

```

- 

```
   ADD_INSNL(ret, nd_line(node), branchif, label_hit);

```

- }
- else {
- 

```
   COMPILE(ret, "rescue arg", narg->nd_head);

```

- 

```
   ADD_INSN2(ret, nd_line(node), getdynamic, INT2FIX(1),

```

- 

```
       INT2FIX(0));

```

- 

```
   ADD_SEND(ret, nd_line(node), ID2SYM(idEqq), INT2FIX(1));

```

- 

```
   ADD_INSNL(ret, nd_line(node), branchif, label_hit);

```

- }  
narg = narg-\>nd\_next;  
}  
if (resq-\>nd\_args == 0) {

---

<div class="post-metadata">

**Author:** ![wanabe](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/51bf81/32.png) [@wanabe](https://www.ruby-forum.com/u/wanabe)\
**Post date:** [April 10, 2008, 3:11am UTC](https://www.ruby-forum.com/t/patch-for-ruby-core-14537/134269/2 "2008-04-10T03:11:21Z")

</div>

e$B$J$+$@$G$9!#e(B

At Wed, 9 Apr 2008 19:20:37 +0900,  
wanabe wrote in [ruby-dev:34272]:

> [ruby-core:14537]e$B$KBP$9$k%Q%C%A$r=q$-$^$7$?!#e(B  
> rescue e$B$N0z?t$KG[Ns$NE83+$r5v$9$h$&$K$7$^$7$?!#e(B

[ruby-core:14537]e$B$de(B rescue Interrupt, \*x  
e$B$N$h$&$JNc$J$i$=$l$G$$e(B  
e$B$$$s$G$9$,!"e(B rescue \*x, Interrupt  
e$B$h$&$JNc$G$O$&$^$/$$$-$^$;$s!#e(B

---

<div class="post-metadata">

**Author:** ![wanabe](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/51bf81/32.png) [@wanabe](https://www.ruby-forum.com/u/wanabe)\
**Post date:** [April 16, 2008, 1:48pm UTC](https://www.ruby-forum.com/t/patch-for-ruby-core-14537/134269/3 "2008-04-16T13:48:28Z")

</div>

e$B%o%J%Y$G$9!#e(B

08/04/10 e$B$Ke(B Nobuyoshi N.[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
e$B$5$s$O=q$-$^$7$?e(B:

> [ruby-core:14537]e$B$de(B rescue Interrupt, \*x e$B$N$h$&$JNc$J$i$=$l$G$$e(B  
> e$B$$$s$G$9$,!"e(B rescue \*x, Interrupt e$B$h$&$JNc$G$O$&$^$/$$$-$^$;$s!#e(B

e$B$J$k$[$I!"e(BNODE\_ARGSPUSH e$B$,2?$J$N$+$d$C$H$o$+$j$^$7$?!#e(B  
e$BF1MM$N\<0$re(B casee$B!Ae(Bwhen  
e$BJ8$G;n$7$?$H$3$m\>e\<j$/$$$+$J$+$C$?$N$Ge(B  
e$B$=$A$i$bJ;$;$F%Q%C%A$K$7$F$\_$^$7$?!#e(B

# Index: compile.c

— compile.c (revision 15984)  
+++ compile.c (working copy)  
@@ -2747,18 +2747,11 @@  
else if (nd\_type(vals) == NODE\_SPLAT ||  
nd\_type(vals) == NODE\_ARGSCAT ||  
nd\_type(vals) == NODE\_ARGSPUSH) {

- 

```
   NODE *val = vals->nd_head;
   special_literals = 0;

```

- 

```
   if (nd_type(vals) == NODE_ARGSCAT ||

```

- 

```
 nd_type(vals) == NODE_ARGSPUSH) {

```

- 

```
 when_vals(iseq, cond_seq, vals->nd_head, l1, 0);

```

- 

```
 val = vals->nd_body;

```

- 

```
   }

```

- 
- 

```
   COMPILE(cond_seq, "when/cond splat", val);

```

- 

```
   ADD_INSN1(cond_seq, nd_line(val), checkincludearray, Qtrue);

```

- 

```
   ADD_INSNL(cond_seq, nd_line(val), branchif, l1);

```

- 

```
   COMPILE(cond_seq, "when/cond splat", vals);

```

- 

```
   ADD_INSN1(cond_seq, nd_line(vals), checkincludearray, Qtrue);

```

- 

```
   ADD_INSNL(cond_seq, nd_line(vals), branchif, l1);

```

}  
else {  
rb\_bug(“NODE\_CASE: unknown node (%s)”,  
@@ -3212,15 +3205,33 @@  
label\_hit = NEW\_LABEL(nd\_line(node));

```
 narg = resq->nd_args;

```

- 

```
 while (narg) {

```

- COMPILE(ret, “rescue arg”, narg-\>nd\_head);
- ADD\_INSN2(ret, nd\_line(node), getdynamic, INT2FIX(1),
- 

```
   INT2FIX(0));

```

- ADD\_SEND(ret, nd\_line(node), ID2SYM(idEqq), INT2FIX(1));
- ADD\_INSNL(ret, nd\_line(node), branchif, label\_hit);
- narg = narg-\>nd\_next;

- 

```
 if (narg) {

```

- if (nd\_type(narg) == NODE\_ARRAY) {
- 

```
   while (narg) {

```

- 

```
 COMPILE(ret, "rescue arg", narg->nd_head);

```

- 

```
 ADD_INSN2(ret, nd_line(node), getdynamic, INT2FIX(1),

```

- 

```
     INT2FIX(0));

```

- 

```
 ADD_SEND(ret, nd_line(node), ID2SYM(idEqq), INT2FIX(1));

```

- 

```
 ADD_INSNL(ret, nd_line(node), branchif, label_hit);

```

- 

```
 narg = narg->nd_next;

```

- 

```
   }

```

- }
- else if (nd\_type(narg) == NODE\_SPLAT ||
- 

```
  nd_type(narg) == NODE_ARGSCAT ||

```

- 

```
  nd_type(narg) == NODE_ARGSPUSH) {

```

- 

```
   ADD_INSN2(ret, nd_line(node), getdynamic, INT2FIX(1),

```

- 

```
       INT2FIX(0));

```

- 

```
   COMPILE(ret, "rescue/cond splat", narg);

```

- 

```
   ADD_INSN1(ret, nd_line(node), checkincludearray, Qtrue);

```

- 

```
   ADD_INSN(ret, nd_line(node), swap);

```

- 

```
   ADD_INSN(ret, nd_line(node), pop);

```

- 

```
   ADD_INSNL(ret, nd_line(node), branchif, label_hit);

```

- } else {
- 

```
   rb_bug("NODE_RESBODY: unknown node (%s)",

```

- 

```
    ruby_node_name(nd_type(narg)));

```

- }  
}

- 

```
 if (resq->nd_args == 0) {

```

- 

```
 else {

```

ADD\_INSN1(ret, nd\_line(node), putobject,  
rb\_eStandardError);  
ADD\_INSN2(ret, nd\_line(node), getdynamic, INT2FIX(1),

---

<div class="post-metadata">

**Author:** ![wanabe](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/51bf81/32.png) [@wanabe](https://www.ruby-forum.com/u/wanabe)\
**Post date:** [April 18, 2008, 3:52pm UTC](https://www.ruby-forum.com/t/patch-for-ruby-core-14537/134269/4 "2008-04-18T15:52:24Z")

</div>

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:34453] Re: patch for [ruby-core:14537]”  
on Fri, 18 Apr 2008 18:15:39 +0900, Nobuyoshi N.  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:

|NODE\_SPLAT,NODE\_ARGSCAT,NODE\_ARGSPUSHe$B$NJ,4t$,$"$A$3$A$K8=$l$F!“e(B  
|e$B7k9=e(Bcompile.ce$B$,$a$s$I$/$5$$$3$H$K$J$C$F$$$k$N$G@0M}$7$?$$$H;W$$e(B  
|e$B$D$D$J$+$J$+?J$^$J$$\>uBV$J$N$G!”$=$l$O$=$l$H$7$F$3$N%Q%C%A$O\<h$je(B  
|e$B9~$s$@$[$&$,$$$$$+$bCN$l$^$;$s$M!#e(B

e$B$8$c$“!”$J$+$@$5$s$,%3%_%C%H$7$F$/$@$5$$!#%o%J%Y$5$s$K$b%3%_%Ce(B  
e$B%H8"$r$5$7$"$2$?J}$,$h$$$+$b$7$l$^$;$s!#e(B

---

<div class="post-metadata">

**Author:** ![wanabe](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/51bf81/32.png) [@wanabe](https://www.ruby-forum.com/u/wanabe)\
**Post date:** [April 18, 2008, 11:17am UTC](https://www.ruby-forum.com/t/patch-for-ruby-core-14537/134269/5 "2008-04-18T11:17:19Z")

</div>

e$B$J$+$@$G$9!#e(B

At Wed, 16 Apr 2008 20:47:24 +0900,  
wanabe wrote in [ruby-dev:34429]:

> > [ruby-core:14537]e$B$de(B rescue Interrupt, \*x e$B$N$h$&$JNc$J$i$=$l$G$$e(B  
> > e$B$$$s$G$9$,!"e(B rescue \*x, Interrupt e$B$h$&$JNc$G$O$&$^$/$$$-$^$;$s!#e(B
> 
> e$B$J$k$[$I!"e(BNODE\_ARGSPUSH e$B$,2?$J$N$+$d$C$H$o$+$j$^$7$?!#e(B  
> e$BF1MM$N\<0$re(B casee$B!Ae(Bwhen e$BJ8$G;n$7$?$H$3$m\>e\<j$/$$$+$J$+$C$?$N$Ge(B  
> e$B$=$A$i$bJ;$;$F%Q%C%A$K$7$F$\_$^$7$?!#e(B

NODE\_SPLAT,NODE\_ARGSCAT,NODE\_ARGSPUSHe$B$NJ,4t$,$"$A$3$A$K8=$l$F!“e(B  
e$B7k9=e(Bcompile.ce$B$,$a$s$I$/$5$$$3$H$K$J$C$F$$$k$N$G@0M}$7$?$$$H;W$$e(B  
e$B$D$D$J$+$J$+?J$^$J$$\>uBV$J$N$G!”$=$l$O$=$l$H$7$F$3$N%Q%C%A$O\<h$je(B  
e$B9~$s$@$[$&$,$$$$$+$bCN$l$^$;$s$M!#e(B
