Ver Fonte

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 há 5 anos atrás
pai
commit
17705d23fb
1 ficheiros alterados com 2 adições e 2 exclusões
  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& scope : m_scope_stack) {
         for (auto& it : scope.variables) {
         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());
         }
         }
     }
     }
 }
 }