diff --git a/icu4c/source/common/rbbinode.cpp b/icu4c/source/common/rbbinode.cpp index ff8d9979e16..2f11c57191b 100644 --- a/icu4c/source/common/rbbinode.cpp +++ b/icu4c/source/common/rbbinode.cpp @@ -184,31 +184,17 @@ RBBINode *RBBINode::flattenVariables() { } if (fLeftChild != NULL) { - if (fLeftChild->fType==varRef) { - RBBINode *oldChild = fLeftChild; - fLeftChild = oldChild->cloneTree(); - fLeftChild->fParent = this; - delete oldChild; - } else { - fLeftChild->flattenVariables(); - } + fLeftChild = fLeftChild->flattenVariables(); + fLeftChild->fParent = this; } - if (fRightChild != NULL) { - if (fRightChild->fType==varRef) { - RBBINode *oldChild = fRightChild; - fRightChild = oldChild->cloneTree(); - fRightChild->fParent = this; - delete oldChild; - } else { - fRightChild->flattenVariables(); - } + fRightChild = fRightChild->flattenVariables(); + fRightChild->fParent = this; } return this; } - //------------------------------------------------------------------------- // // flattenSets Walk the parse tree, replacing any nodes of type setRef