summaryrefslogtreecommitdiff
path: root/re.c
diff options
context:
space:
mode:
authoreban <eban@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2000-06-14 04:19:23 +0000
committereban <eban@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2000-06-14 04:19:23 +0000
commitb810b14ed3df351601e0bcf85e4dcb5c335bede7 (patch)
tree89f99e2090247d186471b5203d6c1189efe1c7e6 /re.c
parent94c7a0fcb974888d61be1fe2ec7e19897f033d25 (diff)
2000-06-14
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_4@754 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 're.c')
-rw-r--r--re.c31
1 files changed, 20 insertions, 11 deletions
diff --git a/re.c b/re.c
index 16930cdf2b..ffe3b60168 100644
--- a/re.c
+++ b/re.c
@@ -197,6 +197,15 @@ rb_mbclen2(c, re)
return len;
}
+static void
+rb_reg_check(re)
+ VALUE re;
+{
+ if (!RREGEXP(re)->ptr || !RREGEXP(re)->str) {
+ rb_raise(rb_eTypeError, "uninitialized Regexp");
+ }
+}
+
extern int ruby_in_compile;
static void
@@ -472,8 +481,8 @@ static int may_need_recompile;
static VALUE matchcache;
static void
-rb_reg_prepare_re(reg)
- VALUE reg;
+rb_reg_prepare_re(re)
+ VALUE re;
{
int need_recompile = 0;
@@ -493,22 +502,22 @@ rb_reg_prepare_re(reg)
need_recompile = 1;
}
- if (!FL_TEST(reg, KCODE_FIXED) &&
- (RBASIC(reg)->flags & KCODE_MASK) != reg_kcode) {
+ if (!FL_TEST(re, KCODE_FIXED) &&
+ (RBASIC(re)->flags & KCODE_MASK) != reg_kcode) {
need_recompile = 1;
- RBASIC(reg)->flags &= ~KCODE_MASK;
- RBASIC(reg)->flags |= reg_kcode;
+ RBASIC(re)->flags &= ~KCODE_MASK;
+ RBASIC(re)->flags |= reg_kcode;
}
if (need_recompile) {
char *err;
- if (FL_TEST(reg, KCODE_FIXED))
- kcode_set_option(reg);
- RREGEXP(reg)->ptr->fastmap_accurate = 0;
- err = re_compile_pattern(RREGEXP(reg)->str, RREGEXP(reg)->len, RREGEXP(reg)->ptr);
+ if (FL_TEST(re, KCODE_FIXED))
+ kcode_set_option(re);
+ RREGEXP(re)->ptr->fastmap_accurate = 0;
+ err = re_compile_pattern(RREGEXP(re)->str, RREGEXP(re)->len, RREGEXP(re)->ptr);
if (err != NULL) {
- rb_reg_raise(RREGEXP(reg)->str, RREGEXP(reg)->len, err, reg);
+ rb_reg_raise(RREGEXP(re)->str, RREGEXP(re)->len, err, re);
}
}
}