diff --git a/ChangeLog b/ChangeLog index 9057898b15..0f6fc95461 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Sat Sep 20 07:59:31 2008 NARUSE, Yui + + * re.c (rb_reg_desc): Regexps of ASCII Compatible encoding may + contain non-ASCII characters. So in that case its encoding + must keep original encoding. + Sat Sep 20 07:44:56 2008 NARUSE, Yui * common.mk: prec.c is removed. diff --git a/re.c b/re.c index b9d3840313..9b9cb87d02 100644 --- a/re.c +++ b/re.c @@ -380,8 +380,12 @@ static VALUE rb_reg_desc(const char *s, long len, VALUE re) { VALUE str = rb_str_buf_new2("/"); - - rb_enc_associate(str, rb_usascii_encoding()); + if (rb_enc_asciicompat(rb_enc_get(re))) { + rb_enc_copy(str, re); + } + else { + rb_enc_associate(str, rb_usascii_encoding()); + } rb_reg_expr_str(str, s, len); rb_str_buf_cat2(str, "/"); if (re) {