mirror of
https://github.com/OpenMW/openmw.git
synced 2025-02-01 01:15:33 +00:00
Merge pull request #3062 from akortunov/master
Fix some issues found by CoverityScan
This commit is contained in:
commit
562375426d
21 changed files with 102 additions and 34 deletions
|
@ -20,6 +20,9 @@
|
|||
QString getAspect(int x, int y)
|
||||
{
|
||||
int gcd = std::gcd (x, y);
|
||||
if (gcd == 0)
|
||||
return QString();
|
||||
|
||||
int xaspect = x / gcd;
|
||||
int yaspect = y / gcd;
|
||||
// special case: 8 : 5 is usually referred to as 16:10
|
||||
|
@ -298,9 +301,9 @@ QStringList Launcher::GraphicsPage::getAvailableResolutions(int screen)
|
|||
return result;
|
||||
}
|
||||
|
||||
QString aspect = getAspect(mode.w, mode.h);
|
||||
QString resolution = QString::number(mode.w) + QString(" x ") + QString::number(mode.h);
|
||||
|
||||
QString aspect = getAspect(mode.w, mode.h);
|
||||
if (aspect == QLatin1String("16:9") || aspect == QLatin1String("16:10")) {
|
||||
resolution.append(tr("\t(Wide ") + aspect + ")");
|
||||
|
||||
|
|
|
@ -56,7 +56,9 @@ void CSMWorld::PotionRefIdAdapter::setData (const RefIdColumn *column, RefIdData
|
|||
|
||||
|
||||
CSMWorld::IngredientColumns::IngredientColumns (const InventoryColumns& columns)
|
||||
: InventoryColumns (columns) {}
|
||||
: InventoryColumns (columns)
|
||||
, mEffects(nullptr)
|
||||
{}
|
||||
|
||||
CSMWorld::IngredientRefIdAdapter::IngredientRefIdAdapter (const IngredientColumns& columns)
|
||||
: InventoryRefIdAdapter<ESM::Ingredient> (UniversalId::Type_Ingredient, columns),
|
||||
|
@ -585,7 +587,13 @@ void CSMWorld::DoorRefIdAdapter::setData (const RefIdColumn *column, RefIdData&
|
|||
}
|
||||
|
||||
CSMWorld::LightColumns::LightColumns (const InventoryColumns& columns)
|
||||
: InventoryColumns (columns) {}
|
||||
: InventoryColumns (columns)
|
||||
, mTime(nullptr)
|
||||
, mRadius(nullptr)
|
||||
, mColor(nullptr)
|
||||
, mSound(nullptr)
|
||||
, mEmitterType(nullptr)
|
||||
{}
|
||||
|
||||
CSMWorld::LightRefIdAdapter::LightRefIdAdapter (const LightColumns& columns)
|
||||
: InventoryRefIdAdapter<ESM::Light> (UniversalId::Type_Light, columns), mColumns (columns)
|
||||
|
@ -1454,7 +1462,15 @@ int CSMWorld::CreatureMiscRefIdAdapter::getNestedRowsCount(const RefIdColumn *co
|
|||
}
|
||||
|
||||
CSMWorld::WeaponColumns::WeaponColumns (const EnchantableColumns& columns)
|
||||
: EnchantableColumns (columns) {}
|
||||
: EnchantableColumns (columns)
|
||||
, mType(nullptr)
|
||||
, mHealth(nullptr)
|
||||
, mSpeed(nullptr)
|
||||
, mReach(nullptr)
|
||||
, mChop{nullptr}
|
||||
, mSlash{nullptr}
|
||||
, mThrust{nullptr}
|
||||
{}
|
||||
|
||||
CSMWorld::WeaponRefIdAdapter::WeaponRefIdAdapter (const WeaponColumns& columns)
|
||||
: EnchantableRefIdAdapter<ESM::Weapon> (UniversalId::Type_Weapon, columns), mColumns (columns)
|
||||
|
|
|
@ -178,7 +178,11 @@ namespace CSMWorld
|
|||
const RefIdColumn *mName;
|
||||
const RefIdColumn *mScript;
|
||||
|
||||
NameColumns (const ModelColumns& base) : ModelColumns (base) {}
|
||||
NameColumns (const ModelColumns& base)
|
||||
: ModelColumns (base)
|
||||
, mName(nullptr)
|
||||
, mScript(nullptr)
|
||||
{}
|
||||
};
|
||||
|
||||
/// \brief Adapter for IDs with names (all but levelled lists and statics)
|
||||
|
@ -247,7 +251,12 @@ namespace CSMWorld
|
|||
const RefIdColumn *mWeight;
|
||||
const RefIdColumn *mValue;
|
||||
|
||||
InventoryColumns (const NameColumns& base) : NameColumns (base) {}
|
||||
InventoryColumns (const NameColumns& base)
|
||||
: NameColumns (base)
|
||||
, mIcon(nullptr)
|
||||
, mWeight(nullptr)
|
||||
, mValue(nullptr)
|
||||
{}
|
||||
};
|
||||
|
||||
/// \brief Adapter for IDs that can go into an inventory
|
||||
|
@ -405,7 +414,11 @@ namespace CSMWorld
|
|||
const RefIdColumn *mEnchantment;
|
||||
const RefIdColumn *mEnchantmentPoints;
|
||||
|
||||
EnchantableColumns (const InventoryColumns& base) : InventoryColumns (base) {}
|
||||
EnchantableColumns (const InventoryColumns& base)
|
||||
: InventoryColumns (base)
|
||||
, mEnchantment(nullptr)
|
||||
, mEnchantmentPoints(nullptr)
|
||||
{}
|
||||
};
|
||||
|
||||
/// \brief Adapter for enchantable IDs
|
||||
|
@ -474,7 +487,11 @@ namespace CSMWorld
|
|||
const RefIdColumn *mQuality;
|
||||
const RefIdColumn *mUses;
|
||||
|
||||
ToolColumns (const InventoryColumns& base) : InventoryColumns (base) {}
|
||||
ToolColumns (const InventoryColumns& base)
|
||||
: InventoryColumns (base)
|
||||
, mQuality(nullptr)
|
||||
, mUses(nullptr)
|
||||
{}
|
||||
};
|
||||
|
||||
/// \brief Adapter for tools with limited uses IDs (lockpick, repair, probes)
|
||||
|
@ -549,7 +566,17 @@ namespace CSMWorld
|
|||
const RefIdColumn *mAiPackages;
|
||||
std::map<const RefIdColumn *, unsigned int> mServices;
|
||||
|
||||
ActorColumns (const NameColumns& base) : NameColumns (base) {}
|
||||
ActorColumns (const NameColumns& base)
|
||||
: NameColumns (base)
|
||||
, mHello(nullptr)
|
||||
, mFlee(nullptr)
|
||||
, mFight(nullptr)
|
||||
, mAlarm(nullptr)
|
||||
, mInventory(nullptr)
|
||||
, mSpells(nullptr)
|
||||
, mDestinations(nullptr)
|
||||
, mAiPackages(nullptr)
|
||||
{}
|
||||
};
|
||||
|
||||
/// \brief Adapter for actor IDs (handles common AI functionality)
|
||||
|
@ -2054,7 +2081,11 @@ namespace CSMWorld
|
|||
const RefIdColumn *mLevList;
|
||||
const RefIdColumn *mNestedListLevList;
|
||||
|
||||
LevListColumns (const BaseColumns& base) : BaseColumns (base) {}
|
||||
LevListColumns (const BaseColumns& base)
|
||||
: BaseColumns (base)
|
||||
, mLevList(nullptr)
|
||||
, mNestedListLevList(nullptr)
|
||||
{}
|
||||
};
|
||||
|
||||
template<typename RecordT>
|
||||
|
|
|
@ -71,7 +71,7 @@ namespace MWGui
|
|||
, mUpdateTimer(0.f)
|
||||
{
|
||||
float uiScale = Settings::Manager::getFloat("scaling factor", "GUI");
|
||||
if (uiScale > 1.0)
|
||||
if (uiScale > 0.f)
|
||||
mScaleFactor = uiScale;
|
||||
|
||||
mPreviewTexture.reset(new osgMyGUI::OSGTexture(mPreview->getTexture()));
|
||||
|
|
|
@ -61,6 +61,9 @@ namespace
|
|||
std::string getAspect (int x, int y)
|
||||
{
|
||||
int gcd = std::gcd (x, y);
|
||||
if (gcd == 0)
|
||||
return std::string();
|
||||
|
||||
int xaspect = x / gcd;
|
||||
int yaspect = y / gcd;
|
||||
// special case: 8 : 5 is usually referred to as 16:10
|
||||
|
@ -249,8 +252,10 @@ namespace MWGui
|
|||
std::sort(resolutions.begin(), resolutions.end(), sortResolutions);
|
||||
for (std::pair<int, int>& resolution : resolutions)
|
||||
{
|
||||
std::string str = MyGUI::utility::toString(resolution.first) + " x " + MyGUI::utility::toString(resolution.second)
|
||||
+ " (" + getAspect(resolution.first, resolution.second) + ")";
|
||||
std::string str = MyGUI::utility::toString(resolution.first) + " x " + MyGUI::utility::toString(resolution.second);
|
||||
std::string aspect = getAspect(resolution.first, resolution.second);
|
||||
if (!aspect.empty())
|
||||
str = str + " (" + aspect + ")";
|
||||
|
||||
if (mResolutionList->findItemIndexWith(str) == MyGUI::ITEM_NONE)
|
||||
mResolutionList->addItem(str);
|
||||
|
|
|
@ -393,7 +393,8 @@ namespace MWGui
|
|||
MWWorld::Ptr player = MWMechanics::getPlayer();
|
||||
int playerGold = player.getClass().getContainerStore(player).count(MWWorld::ContainerStore::sGoldId);
|
||||
|
||||
if (MyGUI::utility::parseInt(mPriceLabel->getCaption()) > playerGold)
|
||||
int price = MyGUI::utility::parseInt(mPriceLabel->getCaption());
|
||||
if (price > playerGold)
|
||||
{
|
||||
MWBase::Environment::get().getWindowManager()->messageBox ("#{sNotifyMessage18}");
|
||||
return;
|
||||
|
@ -401,8 +402,6 @@ namespace MWGui
|
|||
|
||||
mSpell.mName = mNameEdit->getCaption();
|
||||
|
||||
int price = MyGUI::utility::parseInt(mPriceLabel->getCaption());
|
||||
|
||||
player.getClass().getContainerStore(player).remove(MWWorld::ContainerStore::sGoldId, price, player);
|
||||
|
||||
// add gold to NPC trading gold pool
|
||||
|
|
|
@ -70,7 +70,7 @@ namespace MWInput
|
|||
}
|
||||
|
||||
float uiScale = Settings::Manager::getFloat("scaling factor", "GUI");
|
||||
if (uiScale != 0.f)
|
||||
if (uiScale > 0.f)
|
||||
mInvUiScalingFactor = 1.f / uiScale;
|
||||
|
||||
float deadZoneRadius = Settings::Manager::getFloat("joystick dead zone", "Input");
|
||||
|
|
|
@ -37,7 +37,7 @@ namespace MWInput
|
|||
, mGuiCursorEnabled(true)
|
||||
{
|
||||
float uiScale = Settings::Manager::getFloat("scaling factor", "GUI");
|
||||
if (uiScale != 0.f)
|
||||
if (uiScale > 0.f)
|
||||
mInvUiScalingFactor = 1.f / uiScale;
|
||||
|
||||
int w,h;
|
||||
|
|
|
@ -45,13 +45,13 @@ bool MWMechanics::AiAvoidDoor::execute (const MWWorld::Ptr& actor, CharacterCont
|
|||
return true; //Door is no longer opening
|
||||
|
||||
ESM::Position tPos = mDoorPtr.getRefData().getPosition(); //Position of the door
|
||||
float x = pos.pos[0] - tPos.pos[0];
|
||||
float y = pos.pos[1] - tPos.pos[1];
|
||||
float x = pos.pos[1] - tPos.pos[1];
|
||||
float y = pos.pos[0] - tPos.pos[0];
|
||||
|
||||
actor.getClass().getCreatureStats(actor).setMovementFlag(CreatureStats::Flag_Run, true);
|
||||
|
||||
// Turn away from the door and move when turn completed
|
||||
if (zTurn(actor, std::atan2(x,y) + getAdjustedAngle(), osg::DegreesToRadians(5.f)))
|
||||
if (zTurn(actor, std::atan2(y,x) + getAdjustedAngle(), osg::DegreesToRadians(5.f)))
|
||||
actor.getClass().getMovementSettings(actor).mPosition[1] = 1;
|
||||
else
|
||||
actor.getClass().getMovementSettings(actor).mPosition[1] = 0;
|
||||
|
|
|
@ -90,7 +90,7 @@ LocalMap::LocalMap(osg::Group* root)
|
|||
{
|
||||
// Increase map resolution, if use UI scaling
|
||||
float uiScale = Settings::Manager::getFloat("scaling factor", "GUI");
|
||||
if (uiScale > 1.0)
|
||||
if (uiScale > 0.f)
|
||||
mMapResolution *= uiScale;
|
||||
|
||||
SceneUtil::FindByNameVisitor find("Scene Root");
|
||||
|
|
|
@ -815,6 +815,7 @@ namespace MWRender
|
|||
RenderingManager::RayResult result;
|
||||
result.mHit = false;
|
||||
result.mHitRefnum.mContentFile = -1;
|
||||
result.mHitRefnum.mIndex = -1;
|
||||
result.mRatio = 0;
|
||||
if (intersector->containsIntersections())
|
||||
{
|
||||
|
|
|
@ -132,9 +132,11 @@ void MWWorld::Cells::writeCell (ESM::ESMWriter& writer, CellStore& cell) const
|
|||
|
||||
MWWorld::Cells::Cells (const MWWorld::ESMStore& store, std::vector<ESM::ESMReader>& reader)
|
||||
: mStore (store), mReader (reader),
|
||||
mIdCache (Settings::Manager::getInt("pointers cache size", "Cells"), std::pair<std::string, CellStore *> ("", (CellStore*)nullptr)),
|
||||
mIdCacheIndex (0)
|
||||
{}
|
||||
{
|
||||
int cacheSize = std::max(Settings::Manager::getInt("pointers cache size", "Cells"), 0);
|
||||
mIdCache = IdCache(cacheSize, std::pair<std::string, CellStore *> ("", (CellStore*)nullptr));
|
||||
}
|
||||
|
||||
MWWorld::CellStore *MWWorld::Cells::getExterior (int x, int y)
|
||||
{
|
||||
|
@ -259,8 +261,7 @@ MWWorld::Ptr MWWorld::Cells::getPtr (const std::string& name, CellStore& cell,
|
|||
MWWorld::Ptr MWWorld::Cells::getPtr (const std::string& name)
|
||||
{
|
||||
// First check the cache
|
||||
for (std::vector<std::pair<std::string, CellStore *> >::iterator iter (mIdCache.begin());
|
||||
iter!=mIdCache.end(); ++iter)
|
||||
for (IdCache::iterator iter (mIdCache.begin()); iter!=mIdCache.end(); ++iter)
|
||||
if (iter->first==name && iter->second)
|
||||
{
|
||||
Ptr ptr = getPtr (name, *iter->second);
|
||||
|
|
|
@ -28,11 +28,12 @@ namespace MWWorld
|
|||
/// \brief Cell container
|
||||
class Cells
|
||||
{
|
||||
typedef std::vector<std::pair<std::string, CellStore *> > IdCache;
|
||||
const MWWorld::ESMStore& mStore;
|
||||
std::vector<ESM::ESMReader>& mReader;
|
||||
mutable std::map<std::string, CellStore> mInteriors;
|
||||
mutable std::map<std::pair<int, int>, CellStore> mExteriors;
|
||||
std::vector<std::pair<std::string, CellStore *> > mIdCache;
|
||||
IdCache mIdCache;
|
||||
std::size_t mIdCacheIndex;
|
||||
|
||||
Cells (const Cells&);
|
||||
|
|
|
@ -381,8 +381,10 @@ Files::IStreamPtr CompressedBSAFile::getFile(const FileRecord& fileRecord)
|
|||
LZ4F_decompressionContext_t context = nullptr;
|
||||
LZ4F_createDecompressionContext(&context, LZ4F_VERSION);
|
||||
LZ4F_decompressOptions_t options = {};
|
||||
LZ4F_decompress(context, memoryStreamPtr->getRawData(), &uncompressedSize, buffer.get(), &size, &options);
|
||||
LZ4F_errorCode_t errorCode = LZ4F_freeDecompressionContext(context);
|
||||
LZ4F_errorCode_t errorCode = LZ4F_decompress(context, memoryStreamPtr->getRawData(), &uncompressedSize, buffer.get(), &size, &options);
|
||||
if (LZ4F_isError(errorCode))
|
||||
fail("LZ4 decompression error (file " + mFilename + "): " + LZ4F_getErrorName(errorCode));
|
||||
errorCode = LZ4F_freeDecompressionContext(context);
|
||||
if (LZ4F_isError(errorCode))
|
||||
fail("LZ4 decompression error (file " + mFilename + "): " + LZ4F_getErrorName(errorCode));
|
||||
}
|
||||
|
|
|
@ -146,11 +146,10 @@ static void gdb_info(pid_t pid)
|
|||
/*
|
||||
* Create a temp file to put gdb commands into.
|
||||
* Note: POSIX.1-2008 declares that the file should be already created with mode 0600 by default.
|
||||
* Modern systems implement it and and suggest to do not touch masks in multithreaded applications.
|
||||
* Modern systems implement it and suggest to do not touch masks in multithreaded applications.
|
||||
* So CoverityScan warning is valid only for ancient versions of stdlib.
|
||||
*/
|
||||
strcpy(respfile, "/tmp/gdb-respfile-XXXXXX");
|
||||
// coverity[secure_temp]
|
||||
if((fd=mkstemp(respfile)) >= 0 && (f=fdopen(fd, "w")) != nullptr)
|
||||
{
|
||||
fprintf(f, "attach %d\n"
|
||||
|
|
|
@ -42,6 +42,7 @@ void ESM::Header::load (ESMReader &esm)
|
|||
MasterData m;
|
||||
m.name = esm.getHString();
|
||||
m.size = esm.getHNLong ("DATA");
|
||||
m.index = -1;
|
||||
mMaster.push_back (m);
|
||||
}
|
||||
|
||||
|
|
|
@ -569,7 +569,8 @@ namespace Gui
|
|||
resolution = std::min(960, std::max(48, resolution));
|
||||
|
||||
float uiScale = Settings::Manager::getFloat("scaling factor", "GUI");
|
||||
resolution *= uiScale;
|
||||
if (uiScale > 0.f)
|
||||
resolution *= uiScale;
|
||||
|
||||
MyGUI::xml::ElementPtr resolutionNode = resourceNode->createChild("Property");
|
||||
resolutionNode->addAttribute("key", "Resolution");
|
||||
|
|
|
@ -13,6 +13,7 @@ namespace Misc
|
|||
explicit FrameRateLimiter(std::chrono::duration<Rep, Ratio> maxFrameDuration,
|
||||
std::chrono::steady_clock::time_point now = std::chrono::steady_clock::now())
|
||||
: mMaxFrameDuration(std::chrono::duration_cast<std::chrono::steady_clock::duration>(maxFrameDuration))
|
||||
, mLastFrameDuration(0)
|
||||
, mLastMeasurement(now)
|
||||
{}
|
||||
|
||||
|
|
|
@ -226,6 +226,7 @@ namespace Resource
|
|||
, mAutoUseNormalMaps(false)
|
||||
, mAutoUseSpecularMaps(false)
|
||||
, mApplyLightingToEnvMaps(false)
|
||||
, mConvertAlphaTestToAlphaToCoverage(false)
|
||||
, mInstanceCache(new MultiObjectCache)
|
||||
, mSharedStateManager(new SharedStateManager)
|
||||
, mImageManager(imageManager)
|
||||
|
|
|
@ -375,6 +375,7 @@ InputWrapper::InputWrapper(SDL_Window* window, osg::ref_ptr<osgViewer::Viewer> v
|
|||
pack_evt.y = mMouseY = evt.motion.y;
|
||||
pack_evt.xrel = evt.motion.xrel;
|
||||
pack_evt.yrel = evt.motion.yrel;
|
||||
pack_evt.type = SDL_MOUSEMOTION;
|
||||
if (mFirstMouseMove)
|
||||
{
|
||||
// first event should be treated as non-relative, since there's no point of reference
|
||||
|
@ -387,6 +388,7 @@ InputWrapper::InputWrapper(SDL_Window* window, osg::ref_ptr<osgViewer::Viewer> v
|
|||
{
|
||||
mMouseZ += pack_evt.zrel = (evt.wheel.y * 120);
|
||||
pack_evt.z = mMouseZ;
|
||||
pack_evt.type = SDL_MOUSEWHEEL;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
8
extern/osg-ffmpeg-videoplayer/videostate.cpp
vendored
8
extern/osg-ffmpeg-videoplayer/videostate.cpp
vendored
|
@ -50,8 +50,9 @@ VideoState::VideoState()
|
|||
, av_sync_type(AV_SYNC_DEFAULT)
|
||||
, audio_st(nullptr)
|
||||
, video_st(nullptr), frame_last_pts(0.0)
|
||||
, video_clock(0.0), sws_context(nullptr), pictq_size(0)
|
||||
, pictq_rindex(0), pictq_windex(0)
|
||||
, video_clock(0.0), sws_context(nullptr)
|
||||
, sws_context_w(0), sws_context_h(0)
|
||||
, pictq_size(0), pictq_rindex(0), pictq_windex(0)
|
||||
, mSeekRequested(false)
|
||||
, mSeekPos(0)
|
||||
, mVideoEnded(false)
|
||||
|
@ -349,7 +350,10 @@ int VideoState::queue_picture(AVFrame *pFrame, double pts)
|
|||
|
||||
vp->pts = pts;
|
||||
if (vp->set_dimensions(w, h) < 0)
|
||||
{
|
||||
this->pictq_mutex.unlock();
|
||||
return -1;
|
||||
}
|
||||
|
||||
sws_scale(this->sws_context, pFrame->data, pFrame->linesize,
|
||||
0, this->video_ctx->height, vp->rgbaFrame->data, vp->rgbaFrame->linesize);
|
||||
|
|
Loading…
Reference in a new issue