diff --git a/src/bun.js/bindings/JSYogaNode.cpp b/src/bun.js/bindings/JSYogaNode.cpp index 6fe96ebc60..1604186b42 100644 --- a/src/bun.js/bindings/JSYogaNode.cpp +++ b/src/bun.js/bindings/JSYogaNode.cpp @@ -21,11 +21,15 @@ JSYogaNode::JSYogaNode(JSC::VM& vm, JSC::Structure* structure) JSYogaNode::~JSYogaNode() { if (m_node) { + // Clear the context pointer to avoid callbacks during cleanup + YGNodeSetContext(m_node, nullptr); + // Remove from parent to avoid use-after-free when parent tries to clear owner YGNodeRef parent = YGNodeGetParent(m_node); if (parent) { YGNodeRemoveChild(parent, m_node); } + YGNodeFree(m_node); clearInternal(); }