Browse Source

LibJS: Fix string roots not being collected

Previously objects were the only heap
allocated value. Now there are also strings.

This replaces a usage of is_object with is_cell.
Without this change strings could be garbage
collected while still being used in an active scope.
Florian Stellbrink 5 years ago
parent
commit
17705d23fb
1 changed files with 2 additions and 2 deletions
  1. 2 2
      Libraries/LibJS/Interpreter.cpp

+ 2 - 2
Libraries/LibJS/Interpreter.cpp

@@ -122,8 +122,8 @@ void Interpreter::collect_roots(Badge<Heap>, HashTable<Cell*>& roots)
 
     for (auto& scope : m_scope_stack) {
         for (auto& it : scope.variables) {
-            if (it.value.is_object())
-                roots.set(it.value.as_object());
+            if (it.value.is_cell())
+                roots.set(it.value.as_cell());
         }
     }
 }