diff --git a/apps/esmtool/esmtool.cpp b/apps/esmtool/esmtool.cpp index 6d2b59ad98..d4569000bf 100644 --- a/apps/esmtool/esmtool.cpp +++ b/apps/esmtool/esmtool.cpp @@ -507,7 +507,7 @@ int clone(Arguments& info) esm.endRecord(typeName.toString()); saved++; - int perc = (int)((saved / (float)recordCount)*100); + int perc = recordCount == 0 ? 100 : (int)((saved / (float)recordCount)*100); if (perc % 10 == 0) { std::cerr << "\r" << perc << "%"; diff --git a/apps/mwiniimporter/importer.cpp b/apps/mwiniimporter/importer.cpp index 4fbe977201..5b229dc92b 100644 --- a/apps/mwiniimporter/importer.cpp +++ b/apps/mwiniimporter/importer.cpp @@ -860,11 +860,12 @@ std::vector::iterator MwIniImporter::findString(std::vector& output, std::vector input) { - for (auto& path : input) { + for (auto& path : input) + { if (path.front() == '"') { - path.erase(path.begin()); - path.erase(path.end() - 1); + // Drop first and last characters - quotation marks + path = path.substr(1, path.size() - 2); } output.emplace_back(path); } diff --git a/apps/opencs/model/doc/documentmanager.cpp b/apps/opencs/model/doc/documentmanager.cpp index 531cfd2672..a2859beb5f 100644 --- a/apps/opencs/model/doc/documentmanager.cpp +++ b/apps/opencs/model/doc/documentmanager.cpp @@ -9,7 +9,7 @@ #include "document.hpp" CSMDoc::DocumentManager::DocumentManager (const Files::ConfigurationManager& configuration) -: mConfiguration (configuration), mEncoding (ToUTF8::WINDOWS_1252) +: mConfiguration (configuration), mEncoding (ToUTF8::WINDOWS_1252), mFsStrict(false) { boost::filesystem::path projectPath = configuration.getUserDataPath() / "projects"; diff --git a/apps/opencs/model/prefs/shortcut.cpp b/apps/opencs/model/prefs/shortcut.cpp index 27077ac833..924b9535e2 100644 --- a/apps/opencs/model/prefs/shortcut.cpp +++ b/apps/opencs/model/prefs/shortcut.cpp @@ -5,6 +5,8 @@ #include #include +#include + #include "state.hpp" #include "shortcutmanager.hpp" @@ -71,7 +73,14 @@ namespace CSMPrefs Shortcut::~Shortcut() { - State::get().getShortcutManager().removeShortcut(this); + try + { + State::get().getShortcutManager().removeShortcut(this); + } + catch(const std::exception& e) + { + Log(Debug::Error) << "Error in the destructor: " << e.what(); + } } bool Shortcut::isEnabled() const diff --git a/apps/opencs/model/world/actoradapter.cpp b/apps/opencs/model/world/actoradapter.cpp index b89240a80f..2c827373d8 100644 --- a/apps/opencs/model/world/actoradapter.cpp +++ b/apps/opencs/model/world/actoradapter.cpp @@ -21,6 +21,11 @@ namespace CSMWorld return mIsBeast; } + ActorAdapter::RaceData::RaceData() + { + mIsBeast = false; + } + bool ActorAdapter::RaceData::handlesPart(ESM::PartReferenceType type) const { switch (type) @@ -83,6 +88,12 @@ namespace CSMWorld } + ActorAdapter::ActorData::ActorData() + { + mCreature = false; + mFemale = false; + } + const std::string& ActorAdapter::ActorData::getId() const { return mId; diff --git a/apps/opencs/model/world/actoradapter.hpp b/apps/opencs/model/world/actoradapter.hpp index 1c9265be42..912a6bcb38 100644 --- a/apps/opencs/model/world/actoradapter.hpp +++ b/apps/opencs/model/world/actoradapter.hpp @@ -43,6 +43,8 @@ namespace CSMWorld class RaceData { public: + RaceData(); + /// Retrieves the id of the race represented const std::string& getId() const; /// Checks if it's a beast race @@ -80,6 +82,8 @@ namespace CSMWorld class ActorData { public: + ActorData(); + /// Retrieves the id of the actor represented const std::string& getId() const; /// Checks if the actor is a creature diff --git a/apps/opencs/model/world/commands.cpp b/apps/opencs/model/world/commands.cpp index 4c70964791..5ddb753c58 100644 --- a/apps/opencs/model/world/commands.cpp +++ b/apps/opencs/model/world/commands.cpp @@ -198,7 +198,11 @@ CSMWorld::ModifyCommand::ModifyCommand (QAbstractItemModel& model, const QModelI if (mIndex.parent().isValid()) { - setText ("Modify " + dynamic_cast(mModel)->nestedHeaderData ( + CSMWorld::IdTree* tree = dynamic_cast(mModel); + + assert(tree != nullptr); + + setText ("Modify " + tree->nestedHeaderData ( mIndex.parent().column(), mIndex.column(), Qt::Horizontal, Qt::DisplayRole).toString()); } else diff --git a/apps/opencs/view/prefs/dialogue.cpp b/apps/opencs/view/prefs/dialogue.cpp index 1f5772f18f..0d32ebd0ad 100644 --- a/apps/opencs/view/prefs/dialogue.cpp +++ b/apps/opencs/view/prefs/dialogue.cpp @@ -8,6 +8,8 @@ #include #include +#include + #include "../../model/prefs/state.hpp" #include "page.hpp" @@ -77,8 +79,15 @@ CSVPrefs::Dialogue::Dialogue() CSVPrefs::Dialogue::~Dialogue() { - if (isVisible()) - CSMPrefs::State::get().save(); + try + { + if (isVisible()) + CSMPrefs::State::get().save(); + } + catch(const std::exception& e) + { + Log(Debug::Error) << "Error in the destructor: " << e.what(); + } } void CSVPrefs::Dialogue::closeEvent (QCloseEvent *event) diff --git a/apps/opencs/view/render/cameracontroller.cpp b/apps/opencs/view/render/cameracontroller.cpp index 524a798213..5dbb7a28c1 100644 --- a/apps/opencs/view/render/cameracontroller.cpp +++ b/apps/opencs/view/render/cameracontroller.cpp @@ -463,6 +463,7 @@ namespace CSVRender , mDistance(0) , mOrbitSpeed(osg::PI / 4) , mOrbitSpeedMult(4) + , mConstRoll(false) { CSMPrefs::Shortcut* naviPrimaryShortcut = new CSMPrefs::Shortcut("scene-navi-primary", widget); naviPrimaryShortcut->enable(false); diff --git a/apps/opencs/view/render/pathgrid.cpp b/apps/opencs/view/render/pathgrid.cpp index 9eb2765d38..1fa63bedc5 100644 --- a/apps/opencs/view/render/pathgrid.cpp +++ b/apps/opencs/view/render/pathgrid.cpp @@ -227,6 +227,8 @@ namespace CSVRender CSMWorld::IdTree* model = dynamic_cast(mData.getTableModel( CSMWorld::UniversalId::Type_Pathgrids)); + assert(model != nullptr); + const CSMWorld::Pathgrid* source = getPathgridSource(); if (source) { @@ -360,6 +362,8 @@ namespace CSVRender CSMWorld::IdTree* model = dynamic_cast(mData.getTableModel( CSMWorld::UniversalId::Type_Pathgrids)); + assert(model != nullptr); + // Want to remove nodes from end of list first std::sort(mSelected.begin(), mSelected.end(), std::greater()); @@ -461,6 +465,8 @@ namespace CSVRender CSMWorld::IdTree* model = dynamic_cast(mData.getTableModel( CSMWorld::UniversalId::Type_Pathgrids)); + assert(model != nullptr); + int parentColumn = mPathgridCollection.findColumnIndex(CSMWorld::Columns::ColumnId_PathgridEdges); std::set >::iterator row; @@ -636,6 +642,8 @@ namespace CSVRender CSMWorld::IdTree* model = dynamic_cast(mData.getTableModel( CSMWorld::UniversalId::Type_Pathgrids)); + assert(model != nullptr); + int recordIndex = mPathgridCollection.getIndex(mId); int parentColumn = mPathgridCollection.findColumnIndex(CSMWorld::Columns::ColumnId_PathgridEdges); diff --git a/apps/opencs/view/render/scenewidget.cpp b/apps/opencs/view/render/scenewidget.cpp index 6cc64f6537..7e1666dc17 100644 --- a/apps/opencs/view/render/scenewidget.cpp +++ b/apps/opencs/view/render/scenewidget.cpp @@ -13,6 +13,7 @@ #include #include +#include #include #include #include @@ -96,7 +97,14 @@ RenderWidget::RenderWidget(QWidget *parent, Qt::WindowFlags f) RenderWidget::~RenderWidget() { - CompositeViewer::get().removeView(mView); + try + { + CompositeViewer::get().removeView(mView); + } + catch(const std::exception& e) + { + Log(Debug::Error) << "Error in the destructor: " << e.what(); + } } void RenderWidget::flagAsModified() diff --git a/apps/opencs/view/render/terraintexturemode.cpp b/apps/opencs/view/render/terraintexturemode.cpp index 376258c5ed..274e647426 100644 --- a/apps/opencs/view/render/terraintexturemode.cpp +++ b/apps/opencs/view/render/terraintexturemode.cpp @@ -256,9 +256,9 @@ void CSVRender::TerrainTextureMode::editTerrainTextureGrid(const WorldspaceHitRe std::string mBrushTextureInt = mBrushTexture.substr (hashlocation+1); int brushInt = stoi(mBrushTexture.substr (hashlocation+1))+1; // All indices are offset by +1 - float rf = mBrushSize/2; - int r = (mBrushSize/2)+1; - float distance = 0; + int rf = mBrushSize / 2; + int r = mBrushSize / 2 + 1; + int distance = 0; if (mBrushShape == 0) { diff --git a/apps/opencs/view/world/cellcreator.cpp b/apps/opencs/view/world/cellcreator.cpp index a42e7ead4e..16338a9a24 100644 --- a/apps/opencs/view/world/cellcreator.cpp +++ b/apps/opencs/view/world/cellcreator.cpp @@ -25,7 +25,7 @@ std::string CSVWorld::CellCreator::getId() const void CSVWorld::CellCreator::configureCreateCommand(CSMWorld::CreateCommand& command) const { CSMWorld::IdTree *model = dynamic_cast(getData().getTableModel(getCollectionId())); - Q_ASSERT(model != nullptr); + assert(model != nullptr); int parentIndex = model->findColumnIndex(CSMWorld::Columns::ColumnId_Cell); int index = model->findNestedColumnIndex(parentIndex, CSMWorld::Columns::ColumnId_Interior); command.addNestedValue(parentIndex, index, mType->currentIndex() == 0); diff --git a/apps/opencs/view/world/dialoguesubview.cpp b/apps/opencs/view/world/dialoguesubview.cpp index b32e2c7a14..0b04fe6c91 100644 --- a/apps/opencs/view/world/dialoguesubview.cpp +++ b/apps/opencs/view/world/dialoguesubview.cpp @@ -555,8 +555,10 @@ void CSVWorld::EditWidget::remake(int row) if (mTable->hasChildren(mTable->index(row, i)) && !(flags & CSMWorld::ColumnBase::Flag_Dialogue_List)) { - mNestedModels.push_back(new CSMWorld::NestedTableProxyModel ( - mTable->index(row, i), display, dynamic_cast(mTable))); + CSMWorld::IdTree *innerTable = dynamic_cast(mTable); + assert(innerTable != nullptr); + + mNestedModels.push_back(new CSMWorld::NestedTableProxyModel (mTable->index(row, i), display, innerTable)); int idColumn = mTable->findColumnIndex (CSMWorld::Columns::ColumnId_Id); int typeColumn = mTable->findColumnIndex (CSMWorld::Columns::ColumnId_RecordType); diff --git a/apps/opencs/view/world/scripthighlighter.cpp b/apps/opencs/view/world/scripthighlighter.cpp index 6aba66053a..3fb82fad8f 100644 --- a/apps/opencs/view/world/scripthighlighter.cpp +++ b/apps/opencs/view/world/scripthighlighter.cpp @@ -81,8 +81,11 @@ void CSVWorld::ScriptHighlighter::highlight (const Compiler::TokenLoc& loc, Type CSVWorld::ScriptHighlighter::ScriptHighlighter (const CSMWorld::Data& data, Mode mode, QTextDocument *parent) -: QSyntaxHighlighter (parent), Compiler::Parser (mErrorHandler, mContext), mContext (data), - mMode (mode) + : QSyntaxHighlighter (parent) + , Compiler::Parser (mErrorHandler, mContext) + , mContext (data) + , mMode (mode) + , mMarkOccurrences (false) { QColor color ("black"); QTextCharFormat format; diff --git a/apps/openmw/mwmechanics/aiwander.cpp b/apps/openmw/mwmechanics/aiwander.cpp index 833a371272..129d1347bc 100644 --- a/apps/openmw/mwmechanics/aiwander.cpp +++ b/apps/openmw/mwmechanics/aiwander.cpp @@ -955,6 +955,7 @@ namespace MWMechanics , mStoredInitialActorPosition(wander->mStoredInitialActorPosition) , mHasDestination(false) , mDestination(osg::Vec3f(0, 0, 0)) + , mUsePathgrid(false) { if (mStoredInitialActorPosition) mInitialActorPosition = wander->mInitialActorPosition; diff --git a/apps/openmw/mwsound/ffmpeg_decoder.cpp b/apps/openmw/mwsound/ffmpeg_decoder.cpp index 447c386c9c..d1c0dfee54 100644 --- a/apps/openmw/mwsound/ffmpeg_decoder.cpp +++ b/apps/openmw/mwsound/ffmpeg_decoder.cpp @@ -431,6 +431,7 @@ size_t FFmpeg_Decoder::getSampleOffset() FFmpeg_Decoder::FFmpeg_Decoder(const VFS::Manager* vfs) : Sound_Decoder(vfs) , mFormatCtx(nullptr) + , mCodecCtx(nullptr) , mStream(nullptr) , mFrame(nullptr) , mFrameSize(0) diff --git a/components/detournavigator/makenavmesh.cpp b/components/detournavigator/makenavmesh.cpp index 3ee7303864..26f86da321 100644 --- a/components/detournavigator/makenavmesh.cpp +++ b/components/detournavigator/makenavmesh.cpp @@ -129,6 +129,7 @@ namespace config.bmin[2] -= getBorderSize(settings); config.bmax[0] += getBorderSize(settings); config.bmax[2] += getBorderSize(settings); + config.tileSize = settings.mTileSize; return config; }