summaryrefslogtreecommitdiffstats
path: root/re.c
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-01-04 05:01:58 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-01-04 05:01:58 +0000
commit5ad3d60d896ff0a7239272b1f4f1e149b534ba79 (patch)
tree918c67d130954840deab4486585a9aff3084ac79 /re.c
parent1aa062e285ee3e08a5e27f99d2a05612b62de9f6 (diff)
downloadruby-5ad3d60d896ff0a7239272b1f4f1e149b534ba79.tar.gz
ruby-5ad3d60d896ff0a7239272b1f4f1e149b534ba79.tar.xz
ruby-5ad3d60d896ff0a7239272b1f4f1e149b534ba79.zip
* re.c (rb_reg_prepare_re): check string encoding. Oniguruma doesn't
support invalid encoding. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@14880 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 're.c')
-rw-r--r--re.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/re.c b/re.c
index 540313967..b9a421a88 100644
--- a/re.c
+++ b/re.c
@@ -940,6 +940,12 @@ rb_reg_prepare_re(VALUE re, VALUE str)
int need_recompile = 0;
rb_encoding *enc;
+ if (rb_enc_str_coderange(str) == ENC_CODERANGE_BROKEN) {
+ rb_raise(rb_eArgError,
+ "broken %s string",
+ rb_enc_name(rb_enc_get(str)));
+ }
+
rb_reg_check(re);
/* ignorecase status */
if (rb_reg_fixed_encoding_p(re)) {