mirror of
https://github.com/OpenMW/openmw.git
synced 2025-02-01 19:15:33 +00:00
Merge pull request #1974 from akortunov/coverity
Fix some issues found by Coverity Scan
This commit is contained in:
commit
375354ab6b
4 changed files with 28 additions and 55 deletions
|
@ -7,6 +7,7 @@
|
|||
|
||||
#include <components/debug/debuglog.hpp>
|
||||
#include <components/fallback/validate.hpp>
|
||||
#include <components/misc/rng.hpp>
|
||||
#include <components/nifosg/nifloader.hpp>
|
||||
|
||||
#include "model/doc/document.hpp"
|
||||
|
@ -355,6 +356,8 @@ int CS::Editor::run()
|
|||
if (mLocal.empty())
|
||||
return 1;
|
||||
|
||||
Misc::Rng::init();
|
||||
|
||||
mStartup.show();
|
||||
|
||||
QApplication::setQuitOnLastWindowClosed (true);
|
||||
|
|
|
@ -190,12 +190,6 @@ namespace
|
|||
{
|
||||
}
|
||||
|
||||
RemoveFinishedCallbackVisitor(int effectId)
|
||||
: RemoveVisitor()
|
||||
, mHasMagicEffects(false)
|
||||
{
|
||||
}
|
||||
|
||||
virtual void apply(osg::Node &node)
|
||||
{
|
||||
traverse(node);
|
||||
|
@ -228,9 +222,6 @@ namespace
|
|||
virtual void apply(osg::Geometry&)
|
||||
{
|
||||
}
|
||||
|
||||
private:
|
||||
int mEffectId;
|
||||
};
|
||||
|
||||
class RemoveCallbackVisitor : public RemoveVisitor
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
#include <osg/Geometry>
|
||||
|
||||
#include <components/debug/debuglog.hpp>
|
||||
#include <components/misc/rng.hpp>
|
||||
#include <components/nif/controlled.hpp>
|
||||
#include <components/nif/nifkey.hpp>
|
||||
#include <components/nif/data.hpp>
|
||||
|
@ -81,17 +82,17 @@ ParticleShooter::ParticleShooter(const ParticleShooter ©, const osg::CopyOp
|
|||
|
||||
void ParticleShooter::shoot(osgParticle::Particle *particle) const
|
||||
{
|
||||
float hdir = mHorizontalDir + mHorizontalAngle * (2.f * (std::rand() / static_cast<double>(RAND_MAX)) - 1.f);
|
||||
float vdir = mVerticalDir + mVerticalAngle * (2.f * (std::rand() / static_cast<double>(RAND_MAX)) - 1.f);
|
||||
float hdir = mHorizontalDir + mHorizontalAngle * (2.f * Misc::Rng::rollClosedProbability() - 1.f);
|
||||
float vdir = mVerticalDir + mVerticalAngle * (2.f * Misc::Rng::rollClosedProbability() - 1.f);
|
||||
|
||||
osg::Vec3f dir = (osg::Quat(vdir, osg::Vec3f(0,1,0)) * osg::Quat(hdir, osg::Vec3f(0,0,1)))
|
||||
* osg::Vec3f(0,0,1);
|
||||
|
||||
float vel = mMinSpeed + (mMaxSpeed - mMinSpeed) * std::rand() / static_cast<float>(RAND_MAX);
|
||||
float vel = mMinSpeed + (mMaxSpeed - mMinSpeed) * Misc::Rng::rollClosedProbability();
|
||||
particle->setVelocity(dir * vel);
|
||||
|
||||
// Not supposed to set this here, but there doesn't seem to be a better way of doing it
|
||||
particle->setLifeTime(mLifetime + mLifetimeRandom * std::rand() / static_cast<float>(RAND_MAX));
|
||||
particle->setLifeTime(mLifetime + mLifetimeRandom * Misc::Rng::rollClosedProbability());
|
||||
}
|
||||
|
||||
GrowFadeAffector::GrowFadeAffector(float growTime, float fadeTime)
|
||||
|
@ -277,7 +278,8 @@ void Emitter::emitParticles(double dt)
|
|||
|
||||
if (!mTargets.empty())
|
||||
{
|
||||
int randomRecIndex = mTargets[(std::rand() / (static_cast<double>(RAND_MAX)+1.0)) * mTargets.size()];
|
||||
int randomIndex = Misc::Rng::rollClosedProbability() * (mTargets.size() - 1);
|
||||
int randomRecIndex = mTargets[randomIndex];
|
||||
|
||||
// we could use a map here for faster lookup
|
||||
FindGroupByRecIndex visitor(randomRecIndex);
|
||||
|
|
59
extern/oics/tinyxml.cpp
vendored
59
extern/oics/tinyxml.cpp
vendored
|
@ -1046,58 +1046,35 @@ bool TiXmlDocument::LoadFile( FILE* file, TiXmlEncoding encoding )
|
|||
return false;
|
||||
}
|
||||
|
||||
const char* lastPos = buf;
|
||||
const char* p = buf;
|
||||
const char* p = buf; // the read head
|
||||
char* q = buf; // the write head
|
||||
const char CR = 0x0d;
|
||||
const char LF = 0x0a;
|
||||
|
||||
buf[length] = 0;
|
||||
while( *p ) {
|
||||
assert( p < (buf+length) );
|
||||
if ( *p == 0xa ) {
|
||||
// Newline character. No special rules for this. Append all the characters
|
||||
// since the last string, and include the newline.
|
||||
data.append( lastPos, (p-lastPos+1) ); // append, include the newline
|
||||
++p; // move past the newline
|
||||
lastPos = p; // and point to the new buffer (may be 0)
|
||||
assert( p <= (buf+length) );
|
||||
}
|
||||
else if ( *p == 0xd ) {
|
||||
// Carriage return. Append what we have so far, then
|
||||
// handle moving forward in the buffer.
|
||||
if ( (p-lastPos) > 0 ) {
|
||||
data.append( lastPos, p-lastPos ); // do not add the CR
|
||||
}
|
||||
data += (char)0xa; // a proper newline
|
||||
assert( q <= (buf+length) );
|
||||
assert( q <= p );
|
||||
|
||||
if ( *(p+1) == 0xa ) {
|
||||
// Carriage return - new line sequence
|
||||
p += 2;
|
||||
lastPos = p;
|
||||
assert( p <= (buf+length) );
|
||||
}
|
||||
else {
|
||||
// it was followed by something else...that is presumably characters again.
|
||||
++p;
|
||||
lastPos = p;
|
||||
assert( p <= (buf+length) );
|
||||
if ( *p == CR ) {
|
||||
*q++ = LF;
|
||||
p++;
|
||||
if ( *p == LF ) { // check for CR+LF (and skip LF)
|
||||
p++;
|
||||
}
|
||||
}
|
||||
else {
|
||||
++p;
|
||||
*q++ = *p++;
|
||||
}
|
||||
}
|
||||
// Handle any left over characters.
|
||||
if ( p-lastPos ) {
|
||||
data.append( lastPos, p-lastPos );
|
||||
}
|
||||
assert( q <= (buf+length) );
|
||||
*q = 0;
|
||||
|
||||
Parse( buf, 0, encoding );
|
||||
|
||||
delete [] buf;
|
||||
buf = 0;
|
||||
|
||||
Parse( data.c_str(), 0, encoding );
|
||||
|
||||
if ( Error() )
|
||||
return false;
|
||||
else
|
||||
return true;
|
||||
return !Error();
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue