From: Bowon Ryu Date: Tue, 5 Dec 2023 06:27:20 +0000 (+0900) Subject: [Tizen] Add more guard code to detect memory corruption X-Git-Tag: accepted/tizen/unified/20231205.171435^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=207235a293c2426760d7b31c85c9212497c70d92;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git [Tizen] Add more guard code to detect memory corruption This reverts commit e86df473c0189d7b570491830e94846bcb22a084. --- diff --git a/dali-toolkit/internal/visuals/visual-base-impl.cpp b/dali-toolkit/internal/visuals/visual-base-impl.cpp index e270fa5..4522c78 100644 --- a/dali-toolkit/internal/visuals/visual-base-impl.cpp +++ b/dali-toolkit/internal/visuals/visual-base-impl.cpp @@ -159,6 +159,7 @@ Visual::Base::Base(VisualFactoryCache& factoryCache, FittingMode fittingMode, To : mImpl(new Impl(fittingMode, type)), mFactoryCache(factoryCache) { + mImplOrigin = mImpl; } Visual::Base::~Base() @@ -659,6 +660,12 @@ void Visual::Base::DoSetOffScene(Actor& actor) bool Visual::Base::IsOnScene() const { + if(DALI_UNLIKELY(mImplOrigin != mImpl)) + { + DALI_LOG_ERROR("Fatal error!! Memory corruption occured! this : %p\n", this); + DALI_LOG_ERROR("mImpl : %p, mImplOrigin : %p\n", mImpl, mImplOrigin); + DALI_ASSERT_ALWAYS(false); + } return mImpl->mFlags & Impl::IS_ON_SCENE; } diff --git a/dali-toolkit/internal/visuals/visual-base-impl.h b/dali-toolkit/internal/visuals/visual-base-impl.h index 7ebf239..f03c64c 100644 --- a/dali-toolkit/internal/visuals/visual-base-impl.h +++ b/dali-toolkit/internal/visuals/visual-base-impl.h @@ -2,7 +2,7 @@ #define DALI_TOOLKIT_INTERNAL_VISUAL_H /* - * Copyright (c) 2022 Samsung Electronics Co., Ltd. + * Copyright (c) 2023 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -511,6 +511,7 @@ private: protected: struct Impl; Impl* mImpl; + Impl* mImplOrigin{nullptr}; ///< Check for memory corruption VisualFactoryCache& mFactoryCache; };