--- /usr/ports/lang/ruby18/work/ruby-1.8.6/regcomp.c	Sun Feb  5 17:10:39 2006
+++ ruby-1.8.6/regcomp.c	Sat Aug 25 13:27:58 2007
@@ -972,6 +972,7 @@
     break;
 
   default:
+    fprintf(stderr, "bug1\n");
     return ONIGERR_TYPE_BUG;
     break;
   }
@@ -1075,6 +1076,7 @@
     break;
 
   default:
+    fprintf(stderr, "bug2\n");
     return ONIGERR_TYPE_BUG;
     break;
   }
@@ -1192,6 +1194,7 @@
     break;
 
   default:
+    fprintf(stderr, "bug3\n");
     return ONIGERR_TYPE_BUG;
     break;
   }
@@ -1277,7 +1280,12 @@
     r = compile_length_anchor_node(&(NANCHOR(node)), reg);
     break;
 
+  case N_CODE:
+    r = 0;
+    break;
+
   default:
+    fprintf(stderr, "bug4\n");
     return ONIGERR_TYPE_BUG;
     break;
   }
@@ -1346,6 +1354,7 @@
       case CTYPE_WORD:            op = OP_WORD;           break;
       case CTYPE_NOT_WORD:        op = OP_NOT_WORD;       break;
       default:
+        fprintf(stderr, "bug5\n");
 	return ONIGERR_TYPE_BUG;
 	break;
       }
@@ -1419,6 +1428,15 @@
     r = compile_anchor_node(&(NANCHOR(node)), reg);
     break;
 
+  case N_CODE:
+    {
+      int len = strlen(NCODE(node).code) + 1;
+      r = add_opcode(reg, OP_CODE_BLOCK);
+      add_length(reg, len);
+      add_bytes(reg, NCODE(node).code, len);
+    }
+    break;
+
   default:
 #ifdef ONIG_DEBUG
     fprintf(stderr, "compile_tree: undefined node type %d\n", NTYPE(node));
@@ -2079,6 +2097,7 @@
     break;
 
   case N_ANCHOR:
+  case N_CODE:
     break;
 
   default:
@@ -2319,6 +2338,7 @@
   case N_BACKREF:
   case N_ALT:
   case N_ANYCHAR:
+  case N_CODE:
 #ifdef USE_SUBEXP_CALL
   case N_CALL:
 #endif
@@ -2441,6 +2461,10 @@
 			  type_mask, effect_mask, anchor_mask);
     break;
 
+  case N_CODE:
+    r = 0;
+    break;
+
   default:
     break;
   }
@@ -4174,11 +4198,16 @@
     }
     break;
 
+  case N_CODE:
+    set_mml(&opt->len, 0, 0);
+    break;
+
   default:
 #ifdef ONIG_DEBUG
     fprintf(stderr, "optimize_node_left: undefined node type %d\n",
 	    NTYPE(node));
 #endif
+    fprintf(stderr, "bug6\n");
     r = ONIGERR_TYPE_BUG;
     break;
   }
