Skip to content

Commit ce94add

Browse files
committed
Fix global variable counter for alias
If we alias two variable multiple times, for example like this: alias $foo $bar alias $foo $bar Then we will increment the counter for entry2->var->counter each time, which is not correct because we are not adding more references to entry2->var. This reports as a memory leak in RUBY_FREE_AT_EXIT because entry2->var->counter will never reach 0 and thus will never be freed.
1 parent 5c98b89 commit ce94add

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

variable.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1164,7 +1164,7 @@ rb_alias_variable(ID name1, ID name2)
11641164
free_global_variable(var);
11651165
}
11661166
}
1167-
if (entry1) {
1167+
if (entry1->var != entry2->var) {
11681168
entry2->var->counter++;
11691169
entry1->var = entry2->var;
11701170
}

0 commit comments

Comments
 (0)