summaryrefslogtreecommitdiff
path: root/parse.y
diff options
context:
space:
mode:
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y6
1 files changed, 2 insertions, 4 deletions
diff --git a/parse.y b/parse.y
index 0791284141..fd1e33a62c 100644
--- a/parse.y
+++ b/parse.y
@@ -4674,10 +4674,11 @@ coverage(const char *f, int n)
{
extern VALUE rb_vm_get_coverages(void);
VALUE coverages = rb_vm_get_coverages();
- if (RTEST(coverages)) {
+ if (RTEST(coverages) && RBASIC(coverages)->klass == 0) {
VALUE fname = rb_str_new2(f);
VALUE lines = rb_ary_new2(n);
int i;
+ RBASIC(lines)->klass = 0;
for (i = 0; i < n; i++) RARRAY_PTR(lines)[i] = Qnil;
RARRAY(lines)->len = n;
rb_hash_aset(coverages, fname, lines);
@@ -4718,9 +4719,6 @@ yycompile0(VALUE arg, int tracing)
parser_prepare(parser);
n = yyparse((void*)parser);
- if (ruby_coverage) {
- rb_ary_freeze(ruby_coverage);
- }
ruby_debug_lines = 0;
ruby_coverage = 0;
compile_for_eval = 0;