diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/etc.c | 6 | ||||
| -rw-r--r-- | src/string.c | 2 |
2 files changed, 7 insertions, 1 deletions
@@ -8,6 +8,7 @@ #include "mruby/string.h" #include "mruby/data.h" #include "mruby/class.h" +#include "mruby/re.h" struct RData* mrb_data_object_alloc(mrb_state *mrb, struct RClass *klass, void *ptr, const mrb_data_type *type) @@ -176,3 +177,8 @@ mrb_cptr_value(mrb_state *mrb, void *p) } #endif /* MRB_WORD_BOXING */ +mrb_bool +mrb_regexp_p(mrb_state *mrb, mrb_value v) +{ + return mrb_class_defined(mrb, REGEXP_CLASS) && mrb_obj_is_kind_of(mrb, v, mrb_class_get(mrb, REGEXP_CLASS)); +} diff --git a/src/string.c b/src/string.c index 9c206157e..f78564fb8 100644 --- a/src/string.c +++ b/src/string.c @@ -717,7 +717,7 @@ noregexp(mrb_state *mrb, mrb_value self) static void regexp_check(mrb_state *mrb, mrb_value obj) { - if (!memcmp(mrb_obj_classname(mrb, obj), REGEXP_CLASS, sizeof(REGEXP_CLASS) - 1)) { + if (mrb_regexp_p(mrb, obj)) { noregexp(mrb, obj); } } |
