# When \*\[\],1 dumps core

**URL:** <https://www.ruby-forum.com/t/when-1-dumps-core/121150>\
**Category:** Development\
**Created:** [November 24, 2007, 4:42pm UTC](https://www.ruby-forum.com/t/when-1-dumps-core/121150 "2007-11-24T16:42:34Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Yusuke\_ENDOH](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/c89c15/32.png) [@Yusuke\_ENDOH](https://www.ruby-forum.com/u/Yusuke_ENDOH)\
**Post date:** [November 24, 2007, 4:42pm UTC](https://www.ruby-forum.com/t/when-1-dumps-core/121150/1 "2007-11-24T16:42:34Z")

</div>

e$B1sF#$H?=$7$^$9!#e(B

1.9 e$B$Ge(B when e$B@a$Ke(B \*[], 1 e$B$J$I$H=q$/$HMn$A$^$9!#e(B

## $ ./ruby -e ‘case 1 when \*[], 1; end’ – control frame ---------- c:0001 p:---- s:0001 b:-001 l:000000 d:000000 ------

## – backtrace of native function call (Use addr2line) – 0x80e8065 0x8105bd3 0x8105c9b 0x81142d0 0x811725e 0x80dc4e2 0x80dc5b6 0x8059ec4 0x805de00 0x8057be0 0xb7df5ea8 0x8057b01

[BUG] NODE\_CASAE: unknown node (NODE\_ARGSPUSH)  
ruby 1.9.0 (2007-11-23) [i686-linux]

e$B%"%!\<%H$7$^$7$?e(B

e$BB?J,$3$&$G$7$g$&$+!#$D$$$G$Ke(B typo e$B$bD\>$7$F$^$9!#e(B

# Index: compile.c

— compile.c (revision 14007)  
+++ compile.c (working copy)  
@@ -2671,11 +2671,11 @@  
if (nd\_type(vals) == NODE\_ARRAY) {  
special\_literals = when\_vals(iseq, cond\_seq, vals,  
l1, special\_literals);  
}

- 

```
          else if (nd_type(vals) == NODE_SPLAT || nd_type(vals)

```

== NODE\_ARGSCAT) {

- 

```
          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) {

```

- 

```
              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;  
}  
@@ -2685,12 +2685,12 @@  
ADD\_INSNL(cond\_seq, nd\_line(val), branchif, l1);  
}  
else {

- 

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

```

- 

```
              rb_bug("NODE_CASE: unknown node (%s)",
                     ruby_node_name(nd_type(vals)));
          }
      }
      else {

```

- 

```
          rb_bug("NODE_CASAE: must be NODE_ARRAY, but 0");

```

- 

```
          rb_bug("NODE_CASE: must be NODE_ARRAY, but 0");
      }

      node = node->nd_next;

```

@@ -2753,10 +2753,10 @@  
vals = vals-\>nd\_next;  
}  
}

- 

```
      else if (nd_type(vals) == NODE_SPLAT || nd_type(vals) ==

```

NODE\_ARGSCAT) {

- 

```
      else if (nd_type(vals) == NODE_SPLAT || nd_type(vals) ==

```

NODE\_ARGSCAT || nd\_type(vals) == NODE\_ARGSPUSH) {  
NODE \*val = vals-\>nd\_head;

- 

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

```

- 

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

```

NODE\_ARGSPUSH) {  
NODE \*vs = vals-\>nd\_head;  
val = vals-\>nd\_body;
