From 1b1c786d0cf89d6c9d829afaa7ce4676cf36a064 Mon Sep 17 00:00:00 2001 From: Andrei Kortunov Date: Mon, 19 Apr 2021 15:34:22 +0400 Subject: [PATCH 1/7] Do not suppress fixed MyGUI warnings --- CMakeLists.txt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index efc405a45..dd063d4a9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -608,7 +608,6 @@ if (WIN32) 5204 # Class has virtual functions, but its trivial destructor is not virtual # caused by MyGUI - 4275 # non dll-interface class 'std::exception' used as base for dll-interface class 'MyGUI::Exception' 4297 # function assumed not to throw an exception but does # OpenMW specific warnings @@ -644,6 +643,12 @@ if (WIN32) ) endif() + if( "${MyGUI_VERSION}" VERSION_LESS_EQUAL "3.4.1" ) + set(WARNINGS_DISABLE ${WARNINGS_DISABLE} + 4275 # non dll-interface class 'MyGUI::delegates::IDelegateUnlink' used as base for dll-interface class 'MyGUI::Widget' + ) + endif() + foreach(d ${WARNINGS_DISABLE}) set(WARNINGS "${WARNINGS} /wd${d}") endforeach(d) From 0cadc97fb3acc348c95749d5d73f4789f8c65c5e Mon Sep 17 00:00:00 2001 From: Andrei Kortunov Date: Mon, 19 Apr 2021 15:36:58 +0400 Subject: [PATCH 2/7] Fix double -> float conversions --- apps/opencs/view/render/cellarrow.cpp | 2 +- apps/openmw/mwgui/statswindow.cpp | 2 +- apps/openmw/mwmechanics/aicombat.cpp | 2 +- apps/openmw/mwphysics/constants.hpp | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/opencs/view/render/cellarrow.cpp b/apps/opencs/view/render/cellarrow.cpp index ac260fe83..4d6155123 100644 --- a/apps/opencs/view/render/cellarrow.cpp +++ b/apps/opencs/view/render/cellarrow.cpp @@ -151,7 +151,7 @@ void CSVRender::CellArrow::buildShape() osg::Vec4Array *colours = new osg::Vec4Array; for (int i=0; i<6; ++i) - colours->push_back (osg::Vec4f (0.11, 0.6f, 0.95f, 1.0f)); + colours->push_back (osg::Vec4f (0.11f, 0.6f, 0.95f, 1.0f)); for (int i=0; i<6; ++i) colours->push_back (osg::Vec4f (0.08f, 0.44f, 0.7f, 1.0f)); diff --git a/apps/openmw/mwgui/statswindow.cpp b/apps/openmw/mwgui/statswindow.cpp index 4c4450ee0..8e6f95129 100644 --- a/apps/openmw/mwgui/statswindow.cpp +++ b/apps/openmw/mwgui/statswindow.cpp @@ -93,7 +93,7 @@ namespace MWGui int windowHeight = window->getSize().height; //initial values defined in openmw_stats_window.layout, if custom options are not present in .layout, a default is loaded - float leftPaneRatio = 0.44; + float leftPaneRatio = 0.44f; if (mLeftPane->isUserString("LeftPaneRatio")) leftPaneRatio = MyGUI::utility::parseFloat(mLeftPane->getUserString("LeftPaneRatio")); diff --git a/apps/openmw/mwmechanics/aicombat.cpp b/apps/openmw/mwmechanics/aicombat.cpp index 2e6096520..b5e7594f3 100644 --- a/apps/openmw/mwmechanics/aicombat.cpp +++ b/apps/openmw/mwmechanics/aicombat.cpp @@ -531,7 +531,7 @@ namespace MWMechanics // Otherwise apply a random side step (kind of dodging) with some probability // if actor is within range of target's weapon. if (std::abs(angleToTarget) > osg::PI / 4) - moveDuration = 0.2; + moveDuration = 0.2f; else if (distToTarget <= rangeAttackOfTarget && Misc::Rng::rollClosedProbability() < 0.25) moveDuration = 0.1f + 0.1f * Misc::Rng::rollClosedProbability(); if (moveDuration > 0) diff --git a/apps/openmw/mwphysics/constants.hpp b/apps/openmw/mwphysics/constants.hpp index d552ed49e..eaeb308d5 100644 --- a/apps/openmw/mwphysics/constants.hpp +++ b/apps/openmw/mwphysics/constants.hpp @@ -17,10 +17,10 @@ namespace MWPhysics // Arbitrary number. To prevent infinite loops. They shouldn't happen but it's good to be prepared. static constexpr int sMaxIterations = 8; // Allows for more precise movement solving without getting stuck or snagging too easily. - static constexpr float sCollisionMargin = 0.1; + static constexpr float sCollisionMargin = 0.1f; // Allow for a small amount of penetration to prevent numerical precision issues from causing the "unstuck"ing code to run unnecessarily // Currently set to 0 because having the "unstuck"ing code run whenever possible prevents some glitchy snagging issues - static constexpr float sAllowedPenetration = 0.0; + static constexpr float sAllowedPenetration = 0.0f; } #endif From 2009916dd8507bb270522aa462771401229972f9 Mon Sep 17 00:00:00 2001 From: Andrei Kortunov Date: Mon, 19 Apr 2021 15:38:02 +0400 Subject: [PATCH 3/7] Fix dead code --- components/crashcatcher/windows_crashcatcher.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/components/crashcatcher/windows_crashcatcher.cpp b/components/crashcatcher/windows_crashcatcher.cpp index 4c3dfa8f6..33ec319aa 100644 --- a/components/crashcatcher/windows_crashcatcher.cpp +++ b/components/crashcatcher/windows_crashcatcher.cpp @@ -178,8 +178,6 @@ namespace Crash sInstance->handleVectoredException(info); _Exit(1); - - return EXCEPTION_CONTINUE_SEARCH; } void CrashCatcher::handleVectoredException(PEXCEPTION_POINTERS info) From 9647b670e4ff99c4a197501a491b15b4486c9089 Mon Sep 17 00:00:00 2001 From: Andrei Kortunov Date: Mon, 19 Apr 2021 15:43:00 +0400 Subject: [PATCH 4/7] Do not declare unused variables --- apps/opencs/view/render/terraintexturemode.cpp | 2 +- apps/openmw/mwrender/objectpaging.cpp | 2 +- apps/openmw/mwworld/cellpreloader.cpp | 4 ++-- apps/openmw/mwworld/scene.cpp | 4 ++-- apps/openmw/mwworld/worldimp.cpp | 2 +- components/resource/keyframemanager.cpp | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/apps/opencs/view/render/terraintexturemode.cpp b/apps/opencs/view/render/terraintexturemode.cpp index f4a3f461c..fa46cf673 100644 --- a/apps/opencs/view/render/terraintexturemode.cpp +++ b/apps/opencs/view/render/terraintexturemode.cpp @@ -606,7 +606,7 @@ void CSVRender::TerrainTextureMode::createTexture(std::string textureFileName) newId = CSMWorld::LandTexture::createUniqueRecordId(0, counter); if (ltexTable.getRecord(newId).isDeleted() == 0) counter = (counter + 1) % maxCounter; } - catch (const std::exception& e) + catch (const std::exception&) { newId = CSMWorld::LandTexture::createUniqueRecordId(0, counter); freeIndexFound = true; diff --git a/apps/openmw/mwrender/objectpaging.cpp b/apps/openmw/mwrender/objectpaging.cpp index 7386c0069..064d3aa35 100644 --- a/apps/openmw/mwrender/objectpaging.cpp +++ b/apps/openmw/mwrender/objectpaging.cpp @@ -402,7 +402,7 @@ namespace MWRender refs[ref.mRefNum] = ref; } } - catch (std::exception& e) + catch (std::exception&) { continue; } diff --git a/apps/openmw/mwworld/cellpreloader.cpp b/apps/openmw/mwworld/cellpreloader.cpp index 31af5b24b..6bc60968c 100644 --- a/apps/openmw/mwworld/cellpreloader.cpp +++ b/apps/openmw/mwworld/cellpreloader.cpp @@ -84,7 +84,7 @@ namespace MWWorld mTerrain->cacheCell(mTerrainView.get(), mX, mY); mPreloadedObjects.insert(mLandManager->getLand(mX, mY)); } - catch(std::exception& e) + catch(std::exception&) { } } @@ -127,7 +127,7 @@ namespace MWWorld mPreloadedObjects.insert(mBulletShapeManager->getShape(mesh)); } - catch (std::exception& e) + catch (std::exception&) { // ignore error for now, would spam the log too much // error will be shown when visiting the cell diff --git a/apps/openmw/mwworld/scene.cpp b/apps/openmw/mwworld/scene.cpp index 3f050ba36..dae703c8c 100644 --- a/apps/openmw/mwworld/scene.cpp +++ b/apps/openmw/mwworld/scene.cpp @@ -965,7 +965,7 @@ namespace MWWorld { mSceneManager->getTemplate(mMesh); } - catch (std::exception& e) + catch (std::exception&) { } } @@ -1049,7 +1049,7 @@ namespace MWWorld exteriorPositions.emplace_back(pos, gridCenterToBounds(getNewGridCenter(pos))); } } - catch (std::exception& e) + catch (std::exception&) { // ignore error for now, would spam the log too much } diff --git a/apps/openmw/mwworld/worldimp.cpp b/apps/openmw/mwworld/worldimp.cpp index b991c1a03..8bb73c689 100644 --- a/apps/openmw/mwworld/worldimp.cpp +++ b/apps/openmw/mwworld/worldimp.cpp @@ -3895,7 +3895,7 @@ namespace MWWorld if (!model.empty()) scene->preload(model, ref.getPtr().getClass().useAnim()); } - catch(std::exception& e) + catch(std::exception&) { } } diff --git a/components/resource/keyframemanager.cpp b/components/resource/keyframemanager.cpp index f4ab79519..d7eeeeb97 100644 --- a/components/resource/keyframemanager.cpp +++ b/components/resource/keyframemanager.cpp @@ -77,7 +77,7 @@ namespace Resource mTarget.mTextKeys.emplace(parseTimeSignature(line), parseTextKey(line)); } } - catch (std::exception& e) + catch (std::exception&) { Log(Debug::Warning) << "No textkey file found for " << mNormalized; } From 651ad11ad8c09960a28c733ee05c198bc4df5de9 Mon Sep 17 00:00:00 2001 From: Andrei Kortunov Date: Mon, 19 Apr 2021 15:51:00 +0400 Subject: [PATCH 5/7] Do not leave variables without initialization, even in execution paths where they are unused --- apps/openmw/mwdialogue/hypertextparser.cpp | 2 +- apps/openmw/mwgui/dialogue.cpp | 2 +- apps/openmw/mwgui/journalviewmodel.cpp | 2 +- apps/openmw/mwphysics/stepper.cpp | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/openmw/mwdialogue/hypertextparser.cpp b/apps/openmw/mwdialogue/hypertextparser.cpp index 28e450e2b..fa7de97d2 100644 --- a/apps/openmw/mwdialogue/hypertextparser.cpp +++ b/apps/openmw/mwdialogue/hypertextparser.cpp @@ -17,7 +17,7 @@ namespace MWDialogue std::vector parseHyperText(const std::string & text) { std::vector result; - size_t pos_end, iteration_pos = 0; + size_t pos_end = std::string::npos, iteration_pos = 0; for(;;) { size_t pos_begin = text.find('@', iteration_pos); diff --git a/apps/openmw/mwgui/dialogue.cpp b/apps/openmw/mwgui/dialogue.cpp index ace051a02..1f155bd47 100644 --- a/apps/openmw/mwgui/dialogue.cpp +++ b/apps/openmw/mwgui/dialogue.cpp @@ -148,7 +148,7 @@ namespace MWGui // We need this copy for when @# hyperlinks are replaced std::string text = mText; - size_t pos_end; + size_t pos_end = std::string::npos; for(;;) { size_t pos_begin = text.find('@'); diff --git a/apps/openmw/mwgui/journalviewmodel.cpp b/apps/openmw/mwgui/journalviewmodel.cpp index 426c3b437..6b38cd0d9 100644 --- a/apps/openmw/mwgui/journalviewmodel.cpp +++ b/apps/openmw/mwgui/journalviewmodel.cpp @@ -129,7 +129,7 @@ struct JournalViewModelImpl : JournalViewModel utf8text.replace(pos_begin, pos_end+1-pos_begin, displayName); - intptr_t value; + intptr_t value = 0; if (mModel->mKeywordSearch.containsKeyword(topicName, value)) mHyperLinks[std::make_pair(pos_begin, pos_begin+displayName.size())] = value; } diff --git a/apps/openmw/mwphysics/stepper.cpp b/apps/openmw/mwphysics/stepper.cpp index 2a28381be..6c7e5223f 100644 --- a/apps/openmw/mwphysics/stepper.cpp +++ b/apps/openmw/mwphysics/stepper.cpp @@ -60,7 +60,7 @@ namespace MWPhysics // attempt 3: further, less tall fixed distance movement, same as above // If you're making a full conversion you should purge the logic for attempts 2 and 3. Attempts 2 and 3 just try to work around problems with vanilla Morrowind assets. int attempt = 0; - float downStepSize; + float downStepSize = 0; while(attempt < 3) { attempt++; From 7d5c5f8a249519a082a724f59c9ebab1636bcb8c Mon Sep 17 00:00:00 2001 From: Andrei Kortunov Date: Mon, 19 Apr 2021 16:01:41 +0400 Subject: [PATCH 6/7] Do not assign negative values to unsigned variables --- apps/openmw/mwrender/renderingmanager.cpp | 3 +-- components/nifosg/nifloader.cpp | 2 +- components/sceneutil/lightmanager.cpp | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index dc5373b0b..1d149ccbc 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -860,8 +860,7 @@ namespace MWRender { RenderingManager::RayResult result; result.mHit = false; - result.mHitRefnum.mContentFile = -1; - result.mHitRefnum.mIndex = -1; + result.mHitRefnum.unset(); result.mRatio = 0; if (intersector->containsIntersections()) { diff --git a/components/nifosg/nifloader.cpp b/components/nifosg/nifloader.cpp index ae1726f06..a01404595 100644 --- a/components/nifosg/nifloader.cpp +++ b/components/nifosg/nifloader.cpp @@ -238,7 +238,7 @@ namespace NifOsg std::string mFilename; unsigned int mVersion, mUserVersion, mBethVersion; - size_t mFirstRootTextureIndex = -1; + size_t mFirstRootTextureIndex{~0u}; bool mFoundFirstRootTexturingProperty = false; bool mHasNightDayLabel = false; diff --git a/components/sceneutil/lightmanager.cpp b/components/sceneutil/lightmanager.cpp index 8f242daee..5c08b22c4 100644 --- a/components/sceneutil/lightmanager.cpp +++ b/components/sceneutil/lightmanager.cpp @@ -132,7 +132,7 @@ namespace SceneUtil if (value[0] < 0) { positiveColor *= -1.0; - signBit = -1; + signBit = ~0u; } unsigned int packedColor = asRGBA(positiveColor); std::memcpy(&(*mData)[getOffset(index, Diffuse)], &packedColor, sizeof(unsigned int)); From d10399e0835fb10f410693dfb4f78d13aa4473a9 Mon Sep 17 00:00:00 2001 From: Andrei Kortunov Date: Mon, 19 Apr 2021 17:08:03 +0400 Subject: [PATCH 7/7] Cast double constant to float explicitely --- apps/openmw/mwmechanics/aibreathe.cpp | 2 +- apps/openmw/mwrender/camera.cpp | 2 +- components/sceneutil/pathgridutil.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/openmw/mwmechanics/aibreathe.cpp b/apps/openmw/mwmechanics/aibreathe.cpp index 2740355b5..94e4ecd95 100644 --- a/apps/openmw/mwmechanics/aibreathe.cpp +++ b/apps/openmw/mwmechanics/aibreathe.cpp @@ -23,7 +23,7 @@ bool MWMechanics::AiBreathe::execute (const MWWorld::Ptr& actor, CharacterContro actorClass.getCreatureStats(actor).setMovementFlag(CreatureStats::Flag_Run, true); actorClass.getMovementSettings(actor).mPosition[1] = 1; - smoothTurn(actor, -osg::PI / 2, 0); + smoothTurn(actor, static_cast(-osg::PI_2), 0); return false; } diff --git a/apps/openmw/mwrender/camera.cpp b/apps/openmw/mwrender/camera.cpp index 12e6ef3ce..3e5d1d0b3 100644 --- a/apps/openmw/mwrender/camera.cpp +++ b/apps/openmw/mwrender/camera.cpp @@ -433,7 +433,7 @@ namespace MWRender void Camera::setPitch(float angle) { const float epsilon = 0.000001f; - float limit = osg::PI_2 - epsilon; + float limit = static_cast(osg::PI_2) - epsilon; mPitch = osg::clampBetween(angle, -limit, limit); } diff --git a/components/sceneutil/pathgridutil.cpp b/components/sceneutil/pathgridutil.cpp index ed6894dfc..f37a8ba59 100644 --- a/components/sceneutil/pathgridutil.cpp +++ b/components/sceneutil/pathgridutil.cpp @@ -142,7 +142,7 @@ namespace SceneUtil osg::Vec3f dir = toPos - fromPos; dir.normalize(); - osg::Quat rot = osg::Quat(-osg::PI / 2, osg::Vec3(0, 0, 1)); + osg::Quat rot(static_cast(-osg::PI_2), osg::Vec3f(0, 0, 1)); dir = rot * dir; unsigned short diamondIndex = 0;