aboutsummaryrefslogtreecommitdiffstats
path: root/ext/psych/parser.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/psych/parser.c')
-rw-r--r--ext/psych/parser.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/ext/psych/parser.c b/ext/psych/parser.c
index 41260ab6f5..c8b92a0fcd 100644
--- a/ext/psych/parser.c
+++ b/ext/psych/parser.c
@@ -293,8 +293,15 @@ static VALUE parse(VALUE self, VALUE yaml)
static VALUE set_external_encoding(VALUE self, VALUE encoding)
{
yaml_parser_t * parser;
+ VALUE exception;
Data_Get_Struct(self, yaml_parser_t, parser);
+
+ if(parser->encoding) {
+ exception = rb_const_get_at(mPsych, rb_intern("Exception"));
+ rb_raise(exception, "don't set the encoding twice!");
+ }
+
yaml_parser_set_encoding(parser, NUM2INT(encoding));
return encoding;