summaryrefslogtreecommitdiffhomepage
path: root/src/codegen.c
diff options
context:
space:
mode:
authormattn <[email protected]>2013-02-15 13:55:41 +0900
committermattn <[email protected]>2013-02-15 13:55:41 +0900
commite0f25b1fda0c9c67526885fafdabf35d4d4039b7 (patch)
tree4a55368fe51eff1bd6b9d8d1e29fe691ceb5d7ee /src/codegen.c
parent55ef8c50fb959649c8a37ac2412d59da3d79e5b1 (diff)
downloadmruby-e0f25b1fda0c9c67526885fafdabf35d4d4039b7.tar.gz
mruby-e0f25b1fda0c9c67526885fafdabf35d4d4039b7.zip
ready to pass second argument of Regexp.new
Diffstat (limited to 'src/codegen.c')
-rw-r--r--src/codegen.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/codegen.c b/src/codegen.c
index d1242a29f..86cb5eb87 100644
--- a/src/codegen.c
+++ b/src/codegen.c
@@ -16,6 +16,7 @@
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
+#include "re.h"
typedef mrb_ast_node node;
typedef struct mrb_parser_state parser_state;
@@ -1912,12 +1913,14 @@ codegen(codegen_scope *s, node *tree, int val)
case NODE_REGX:
if (val) {
- char *p = (char*)tree->car;
- size_t len = (intptr_t)tree->cdr;
+ char *p1 = (char*)tree->car;
+ //char *p2 = (char*)tree->cdr;
int ai = mrb_gc_arena_save(s->mrb);
- struct RClass* c = mrb_class_get(s->mrb, "Regexp");
- mrb_value args[1];
- args[0] = mrb_str_new(s->mrb, p, len);
+ struct RClass* c = mrb_class_get(s->mrb, REGEXP_CLASS);
+ mrb_value args[2];
+ args[0] = mrb_str_new(s->mrb, p1, strlen(p1));
+ // TODO: Some regexp implementation does not have second argument
+ //args[1] = mrb_str_new(s->mrb, p2, strlen(p2));
int off = new_lit(s,
mrb_class_new_instance(s->mrb, 1, args, c));