summaryrefslogtreecommitdiff
path: root/re.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>1998-09-03 07:43:53 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>1998-09-03 07:43:53 +0000
commitf5da3b6746dba18ab86d11aa49caf97b37ecc6ac (patch)
tree1c472d11ebd04c612140d228a7a5414d3a08e615 /re.c
parent264c52f2e6abc33f09e6a891f67bdf7bddbae406 (diff)
1.1c4
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/v1_1r@293 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 're.c')
-rw-r--r--re.c38
1 files changed, 16 insertions, 22 deletions
diff --git a/re.c b/re.c
index fe84ca9928..c334397f00 100644
--- a/re.c
+++ b/re.c
@@ -142,13 +142,13 @@ kcode_set_option(reg)
switch ((RBASIC(reg)->flags & KCODE_MASK)) {
case KCODE_NONE:
- mbcinit(MBCTYPE_ASCII);
+ re_mbcinit(MBCTYPE_ASCII);
break;
case KCODE_EUC:
- mbcinit(MBCTYPE_EUC);
+ re_mbcinit(MBCTYPE_EUC);
break;
case KCODE_SJIS:
- mbcinit(MBCTYPE_SJIS);
+ re_mbcinit(MBCTYPE_SJIS);
break;
}
}
@@ -158,13 +158,13 @@ kcode_reset_option()
{
switch (reg_kcode) {
case KCODE_NONE:
- mbcinit(MBCTYPE_ASCII);
+ re_mbcinit(MBCTYPE_ASCII);
break;
case KCODE_EUC:
- mbcinit(MBCTYPE_EUC);
+ re_mbcinit(MBCTYPE_EUC);
break;
case KCODE_SJIS:
- mbcinit(MBCTYPE_SJIS);
+ re_mbcinit(MBCTYPE_SJIS);
break;
}
}
@@ -602,15 +602,6 @@ match_to_s(match)
return str;
}
-void
-reg_free(rp)
-Regexp *rp;
-{
- free(rp->buffer);
- free(rp->fastmap);
- free(rp);
-}
-
VALUE cRegexp;
static VALUE
@@ -648,7 +639,7 @@ reg_new_1(klass, s, len, options)
break;
}
- kcode_set_option(re);
+ kcode_set_option((VALUE)re);
if (RTEST(ignorecase)) {
options |= RE_OPTION_IGNORECASE;
FL_SET(re, REG_CASESTATE);
@@ -658,6 +649,9 @@ reg_new_1(klass, s, len, options)
memcpy(re->str, s, len);
re->str[len] = '\0';
re->len = len;
+ if (options & ~0x3) {
+ kcode_reset_option();
+ }
obj_call_init((VALUE)re);
return (VALUE)re;
@@ -975,12 +969,12 @@ rb_set_kcode(code)
case 'E':
case 'e':
reg_kcode = KCODE_EUC;
- mbcinit(MBCTYPE_EUC);
+ re_mbcinit(MBCTYPE_EUC);
break;
case 'S':
case 's':
reg_kcode = KCODE_SJIS;
- mbcinit(MBCTYPE_SJIS);
+ re_mbcinit(MBCTYPE_SJIS);
break;
default:
case 'N':
@@ -989,7 +983,7 @@ rb_set_kcode(code)
case 'a':
set_no_conversion:
reg_kcode = KCODE_NONE;
- mbcinit(MBCTYPE_ASCII);
+ re_mbcinit(MBCTYPE_ASCII);
break;
}
}
@@ -1029,12 +1023,12 @@ Init_Regexp()
re_set_casetable(casetable);
#ifdef RUBY_USE_EUC
- mbcinit(MBCTYPE_EUC);
+ re_mbcinit(MBCTYPE_EUC);
#else
#ifdef RUBY_USE_SJIS
- mbcinit(MBCTYPE_SJIS);
+ re_mbcinit(MBCTYPE_SJIS);
#else
- mbcinit(MBCTYPE_ASCII);
+ re_mbcinit(MBCTYPE_ASCII);
#endif
#endif