summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2014-04-17 17:17:37 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2014-04-17 17:17:37 +0900
commitd000c72bc614be7edf49e04fb05ac62a4707c81a (patch)
treeb2010c313a50479d08f7edb5b829618c9278e3eb /src
parent1d51d1a0b55ebde3c5b96f35e1bc00072170c65b (diff)
parent699964a86e6492def423d7fcd28f8cd3615df468 (diff)
downloadmruby-d000c72bc614be7edf49e04fb05ac62a4707c81a.tar.gz
mruby-d000c72bc614be7edf49e04fb05ac62a4707c81a.zip
Merge pull request #2072 from take-cheeze/mrb_regexp_p
Add mrb_regexp_p.
Diffstat (limited to 'src')
-rw-r--r--src/etc.c6
-rw-r--r--src/string.c2
2 files changed, 7 insertions, 1 deletions
diff --git a/src/etc.c b/src/etc.c
index 8398aeebd..830c48433 100644
--- a/src/etc.c
+++ b/src/etc.c
@@ -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);
}
}