summaryrefslogtreecommitdiff
path: root/parse.y
diff options
context:
space:
mode:
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y1
1 files changed, 1 insertions, 0 deletions
diff --git a/parse.y b/parse.y
index 2ec9d7770c..5948f6e2f6 100644
--- a/parse.y
+++ b/parse.y
@@ -6414,6 +6414,7 @@ lex_getline(struct parser_params *p)
VALUE line = (*p->lex.gets)(p, p->lex.input);
if (NIL_P(line)) return line;
must_be_ascii_compatible(line);
+ if (RB_OBJ_FROZEN(line)) line = rb_str_dup(line); // needed for RubyVM::AST.of because script_lines in iseq is deep-frozen
#ifndef RIPPER
if (p->debug_lines) {
rb_enc_associate(line, p->enc);