diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2016-02-04 23:22:01 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2016-02-04 23:22:01 +0900 |
| commit | 5e514c910fdde7ec29c9110e8c9535d8e83b2a8f (patch) | |
| tree | 85bc7f67f92b92b23a63b5baa2766a18189b3760 /src/etc.c | |
| parent | 4344ca0acab1196ccdc515d181259003fb0cfe94 (diff) | |
| download | mruby-5e514c910fdde7ec29c9110e8c9535d8e83b2a8f.tar.gz mruby-5e514c910fdde7ec29c9110e8c9535d8e83b2a8f.zip | |
cache mrb_regexp_p(); ref #980
Diffstat (limited to 'src/etc.c')
| -rw-r--r-- | src/etc.c | 13 |
1 files changed, 12 insertions, 1 deletions
@@ -179,7 +179,18 @@ mrb_word_boxing_cptr_value(mrb_state *mrb, void *p) MRB_API 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)); + if (mrb->flags & MRB_STATE_NO_REGEXP) { + return FALSE; + } + if ((mrb->flags & MRB_STATE_REGEXP) || mrb_class_defined(mrb, REGEXP_CLASS)) { + mrb->flags |= MRB_STATE_REGEXP; + return mrb_obj_is_kind_of(mrb, v, mrb_class_get(mrb, REGEXP_CLASS)); + } + else { + mrb->flags |= MRB_STATE_REGEXP; + mrb->flags |= MRB_STATE_NO_REGEXP; + } + return FALSE; } #if defined _MSC_VER && _MSC_VER < 1900 |
