diff --git a/java/com/facebook/yoga/YogaNode.java b/java/com/facebook/yoga/YogaNode.java index 90caf8f8..f8b895b1 100644 --- a/java/com/facebook/yoga/YogaNode.java +++ b/java/com/facebook/yoga/YogaNode.java @@ -1,8 +1,9 @@ /* - * Copyright (c) 2014-present, Facebook, Inc. + * Copyright (c) 2014-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the LICENSE + * file in the root directory of this source tree. * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. */ package com.facebook.yoga; @@ -185,6 +186,11 @@ public class YogaNode implements Cloneable { clonedYogaNode.mOwner = null; clonedYogaNode.mChildren = mChildren != null ? (List) ((ArrayList) mChildren).clone() : null; + if (clonedYogaNode.mChildren != null) { + for (YogaNode child : clonedYogaNode.mChildren) { + child.mOwner = null; + } + } return clonedYogaNode; } catch (CloneNotSupportedException ex) { // This class implements Cloneable, this should not happen diff --git a/yoga/Yoga.cpp b/yoga/Yoga.cpp index c6a8ffd2..3c83ce08 100644 --- a/yoga/Yoga.cpp +++ b/yoga/Yoga.cpp @@ -1,8 +1,9 @@ -/** - * Copyright (c) 2014-present, Facebook, Inc. +/* + * Copyright (c) 2014-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the LICENSE + * file in the root directory of this source tree. * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. */ #include "Yoga.h" @@ -243,6 +244,9 @@ YGNodeRef YGNodeClone(YGNodeRef oldNode) { oldNode->getConfig(), node != nullptr, "Could not allocate memory for node"); + for (auto &item : oldNode->getChildren()) { + item->setOwner(nullptr); + } gNodeInstanceCount++; node->setOwner(nullptr); return node;