summaryrefslogtreecommitdiff
path: root/parse.y
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-01-27 15:39:14 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-01-27 15:39:14 +0000
commit7c69f166bd05703ecf8ed07fac0927f5fc9b22fa (patch)
tree941429be2fdbf19abca1785b2020a956692ee2fd /parse.y
parentb980803a6e89c8e8b951fe6090fca8f083ef4687 (diff)
* parse.y (parser_set_encode): check if encoding is ASCII compatible.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15282 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y8
1 files changed, 7 insertions, 1 deletions
diff --git a/parse.y b/parse.y
index 6164ba46e1..19b8ba658c 100644
--- a/parse.y
+++ b/parse.y
@@ -5746,10 +5746,16 @@ static void
parser_set_encode(struct parser_params *parser, const char *name)
{
int idx = rb_enc_find_index(name);
+ rb_encoding *enc;
+
if (idx < 0) {
rb_raise(rb_eArgError, "unknown encoding name: %s", name);
}
- parser->enc = rb_enc_from_index(idx);
+ enc = rb_enc_from_index(idx);
+ if (!rb_enc_asciicompat(enc)) {
+ rb_raise(rb_eArgError, "%s is not ASCII compatible", rb_enc_name(enc));
+ }
+ parser->enc = enc;
}
#ifndef RIPPER