From 464a8f38602a97b0a4dac940a13219f993f2a051 Mon Sep 17 00:00:00 2001 From: wmayer Date: Tue, 16 Aug 2016 14:05:52 +0200 Subject: [PATCH] Coverity issues: 129643 129654 129689 129714 --- src/App/ColorModel.cpp | 2 +- src/Base/FileTemplate.cpp | 4 +++ src/Base/Interpreter.cpp | 2 +- src/Base/Reader.cpp | 3 +- src/Base/Unit.cpp | 66 ++++++++++++++++++++++++--------------- src/Base/Unit.h | 2 +- 6 files changed, 49 insertions(+), 30 deletions(-) diff --git a/src/App/ColorModel.cpp b/src/App/ColorModel.cpp index a668d9ba63de..1d81b6e8c3f3 100644 --- a/src/App/ColorModel.cpp +++ b/src/App/ColorModel.cpp @@ -52,7 +52,7 @@ ColorModel::~ColorModel () ColorModel& ColorModel::operator = (const ColorModel &rclM) { // first check if both objects are identical - if (this->_pclColors && this->_pclColors == rclM._pclColors) + if (this == &rclM) return *this; delete [] _pclColors; diff --git a/src/Base/FileTemplate.cpp b/src/Base/FileTemplate.cpp index 232e3d446ddc..95d09a55c560 100644 --- a/src/Base/FileTemplate.cpp +++ b/src/Base/FileTemplate.cpp @@ -41,6 +41,10 @@ using namespace Base; * A more elaborate description of the constructor. */ ClassTemplate::ClassTemplate() + : enumPtr(0) + , enumVar(TVal1) + , publicVar(0) + , handler(0) { } diff --git a/src/Base/Interpreter.cpp b/src/Base/Interpreter.cpp index 37900bc629e9..397aeea2ff06 100644 --- a/src/Base/Interpreter.cpp +++ b/src/Base/Interpreter.cpp @@ -171,7 +171,7 @@ class PythonStdOutput : public Py::PythonExtension InterpreterSingleton::InterpreterSingleton() { - //Py_Initialize(); + this->_global = 0; } InterpreterSingleton::~InterpreterSingleton() diff --git a/src/Base/Reader.cpp b/src/Base/Reader.cpp index b5c8fc1120df..f41b86bf3a94 100644 --- a/src/Base/Reader.cpp +++ b/src/Base/Reader.cpp @@ -63,7 +63,8 @@ using namespace std; Base::XMLReader::XMLReader(const char* FileName, std::istream& str) : DocumentSchema(0), ProgramVersion(""), FileVersion(0), Level(0), - _File(FileName), _valid(false), _verbose(true) + CharacterCount(0), ReadType(None), _File(FileName), _valid(false), + _verbose(true) { #ifdef _MSC_VER str.imbue(std::locale::empty()); diff --git a/src/Base/Unit.cpp b/src/Base/Unit.cpp index bea4cbbff305..6fd5f55460de 100644 --- a/src/Base/Unit.cpp +++ b/src/Base/Unit.cpp @@ -27,6 +27,7 @@ #endif #include "Unit.h" +#include "Quantity.h" #include "Exception.h" using namespace Base; @@ -79,27 +80,27 @@ Unit::Unit(int8_t Length, (int32_t)Density); Sig.Length = Length; - Sig.Mass = Mass; - Sig.Time = Time; - Sig.ElectricCurrent = ElectricCurrent; - Sig.ThermodynamicTemperature = ThermodynamicTemperature; - Sig.AmountOfSubstance = AmountOfSubstance; - Sig.LuminoseIntensity = LuminoseIntensity; - Sig.Angle = Angle; + Sig.Mass = Mass; + Sig.Time = Time; + Sig.ElectricCurrent = ElectricCurrent; + Sig.ThermodynamicTemperature = ThermodynamicTemperature; + Sig.AmountOfSubstance = AmountOfSubstance; + Sig.LuminoseIntensity = LuminoseIntensity; + Sig.Angle = Angle; Sig.Density = Density; } Unit::Unit() { - Sig.Length = 0; - Sig.Mass = 0; - Sig.Time = 0; - Sig.ElectricCurrent = 0; - Sig.ThermodynamicTemperature = 0; - Sig.AmountOfSubstance = 0; - Sig.LuminoseIntensity = 0; - Sig.Angle = 0; + Sig.Length = 0; + Sig.Mass = 0; + Sig.Time = 0; + Sig.ElectricCurrent = 0; + Sig.ThermodynamicTemperature = 0; + Sig.AmountOfSubstance = 0; + Sig.LuminoseIntensity = 0; + Sig.Angle = 0; Sig.Density = 0; } @@ -108,12 +109,25 @@ Unit::Unit(const Unit& that) this->Sig = that.Sig; } -Unit::Unit(const std::string& Pars) +Unit::Unit(const QString& expr) { - + try { + *this = Quantity::parse(expr).getUnit(); + } + catch (...) { + Sig.Length = 0; + Sig.Mass = 0; + Sig.Time = 0; + Sig.ElectricCurrent = 0; + Sig.ThermodynamicTemperature = 0; + Sig.AmountOfSubstance = 0; + Sig.LuminoseIntensity = 0; + Sig.Angle = 0; + Sig.Density = 0; + } } -Unit Unit::pow(char exp)const +Unit Unit::pow(char exp) const { checkRange("pow()", (int32_t)Sig.Length * (int32_t)exp, @@ -223,15 +237,15 @@ Unit Unit::operator /(const Unit &right) const Unit& Unit::operator = (const Unit &New) { - Sig.Length = New.Sig.Length; - Sig.Mass = New.Sig.Mass ; - Sig.Time = New.Sig.Time ; - Sig.ElectricCurrent = New.Sig.ElectricCurrent ; + Sig.Length = New.Sig.Length; + Sig.Mass = New.Sig.Mass; + Sig.Time = New.Sig.Time; + Sig.ElectricCurrent = New.Sig.ElectricCurrent; Sig.ThermodynamicTemperature = New.Sig.ThermodynamicTemperature; - Sig.AmountOfSubstance = New.Sig.AmountOfSubstance ; - Sig.LuminoseIntensity = New.Sig.LuminoseIntensity ; - Sig.Angle = New.Sig.Angle ; - Sig.Density = New.Sig.Density ; + Sig.AmountOfSubstance = New.Sig.AmountOfSubstance; + Sig.LuminoseIntensity = New.Sig.LuminoseIntensity; + Sig.Angle = New.Sig.Angle; + Sig.Density = New.Sig.Density; return *this; } diff --git a/src/Base/Unit.h b/src/Base/Unit.h index f561eece1ec9..65c213e0eeec 100644 --- a/src/Base/Unit.h +++ b/src/Base/Unit.h @@ -65,7 +65,7 @@ class BaseExport Unit Unit(int8_t Length,int8_t Mass=0,int8_t Time=0,int8_t ElectricCurrent=0,int8_t ThermodynamicTemperature=0,int8_t AmountOfSubstance=0,int8_t LuminoseIntensity=0,int8_t Angle=0, int8_t Density=0); Unit(void); Unit(const Unit&); - Unit(const std::string& Pars); + Unit(const QString& expr); /// Destruction ~Unit () {}