From 88810661f4f6421c4bb2e07a3a20404f816d69db Mon Sep 17 00:00:00 2001 From: Rebecca Muraira Date: Wed, 18 Sep 2019 11:14:54 -0700 Subject: [PATCH] [UWP] Fix cirucular reference in element tag --- source/uwp/Renderer/lib/ElementTagContent.cpp | 5 ++++- source/uwp/Renderer/lib/ElementTagContent.h | 2 +- source/uwp/Renderer/lib/RenderedAdaptiveCard.cpp | 5 ++++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/source/uwp/Renderer/lib/ElementTagContent.cpp b/source/uwp/Renderer/lib/ElementTagContent.cpp index baf0642135..fb37b3ef90 100644 --- a/source/uwp/Renderer/lib/ElementTagContent.cpp +++ b/source/uwp/Renderer/lib/ElementTagContent.cpp @@ -4,6 +4,7 @@ #include "pch.h" #include "ElementTagContent.h" +using namespace Microsoft::WRL; using namespace ABI::AdaptiveNamespace; using namespace ABI::Windows::UI::Xaml; using namespace ABI::Windows::UI::Xaml::Controls; @@ -16,8 +17,10 @@ namespace AdaptiveNamespace _In_ IColumnDefinition* columnDefinition, _In_ boolean expectedVisibility) { + ComPtr localParentPanel(parentPanel); + RETURN_IF_FAILED(localParentPanel.AsWeak(&m_parentPanel)); + m_columnDefinition = columnDefinition; - m_parentPanel = parentPanel; m_separator = separator; m_cardElement = cardElement; m_expectedVisibility = expectedVisibility; diff --git a/source/uwp/Renderer/lib/ElementTagContent.h b/source/uwp/Renderer/lib/ElementTagContent.h index 4a11556405..2e98e959f3 100644 --- a/source/uwp/Renderer/lib/ElementTagContent.h +++ b/source/uwp/Renderer/lib/ElementTagContent.h @@ -40,7 +40,7 @@ namespace AdaptiveNamespace Microsoft::WRL::ComPtr m_cardElement; Microsoft::WRL::ComPtr m_columnDefinition; Microsoft::WRL::ComPtr m_separator; - Microsoft::WRL::ComPtr m_parentPanel; + Microsoft::WRL::WeakRef m_parentPanel; boolean m_expectedVisibility; }; } diff --git a/source/uwp/Renderer/lib/RenderedAdaptiveCard.cpp b/source/uwp/Renderer/lib/RenderedAdaptiveCard.cpp index f309e1cf0e..6cab1f09b9 100644 --- a/source/uwp/Renderer/lib/RenderedAdaptiveCard.cpp +++ b/source/uwp/Renderer/lib/RenderedAdaptiveCard.cpp @@ -240,7 +240,10 @@ namespace AdaptiveNamespace for (auto parentPanel : parentPanels) { - XamlHelpers::SetSeparatorVisibility(parentPanel); + if (parentPanel) + { + XamlHelpers::SetSeparatorVisibility(parentPanel); + } } return S_OK;