From aed0da46a985ad924c0e3677cb4a379eb56d86dd Mon Sep 17 00:00:00 2001 From: Andrei Kortunov Date: Tue, 5 Jul 2022 17:19:29 +0400 Subject: [PATCH] Check a result of dynamic_cast --- apps/openmw/mwrender/pingpongcull.cpp | 2 ++ components/fx/stateupdater.cpp | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/apps/openmw/mwrender/pingpongcull.cpp b/apps/openmw/mwrender/pingpongcull.cpp index ad1e7ab940..c3affa531a 100644 --- a/apps/openmw/mwrender/pingpongcull.cpp +++ b/apps/openmw/mwrender/pingpongcull.cpp @@ -39,6 +39,8 @@ namespace MWRender size_t frameId = frame % 2; MWRender::PostProcessor* postProcessor = dynamic_cast(cv->getCurrentCamera()->getUserData()); + if (!postProcessor) + throw std::runtime_error("PingPongCull: failed to get a PostProcessor!"); if (Stereo::getStereo()) { diff --git a/components/fx/stateupdater.cpp b/components/fx/stateupdater.cpp index 36362e07a4..00034b54f0 100644 --- a/components/fx/stateupdater.cpp +++ b/components/fx/stateupdater.cpp @@ -40,6 +40,8 @@ namespace fx if (mUseUBO) { osg::UniformBufferBinding* ubb = dynamic_cast(stateset->getAttribute(osg::StateAttribute::UNIFORMBUFFERBINDING, static_cast(Resource::SceneManager::UBOBinding::PostProcessor))); + if (!ubb) + throw std::runtime_error("StateUpdater::apply: failed to get an UniformBufferBinding!"); auto& dest = static_cast*>(ubb->getBufferData())->getData(); mData.copyTo(dest); @@ -60,4 +62,4 @@ namespace fx if (mPointLightBuffer) mPointLightBuffer->applyUniforms(nv->getTraversalNumber(), stateset); } -} \ No newline at end of file +}