From: <ag...@us...> - 2012-01-25 19:28:40
|
Revision: 2683 http://zoolib.svn.sourceforge.net/zoolib/?rev=2683&view=rev Author: agreen Date: 2012-01-25 19:28:33 +0000 (Wed, 25 Jan 2012) Log Message: ----------- Changes suggested by trial install of PVS-Studio and clang static analysis. Modified Paths: -------------- trunk/zoolib/source/cxx/old/zoolib/ZYad_ZooLibStrim.cpp trunk/zoolib/source/cxx/zoolib/ZAny.cpp trunk/zoolib/source/cxx/zoolib/ZCallable_Bind.h trunk/zoolib/source/cxx/zoolib/ZCompare.h trunk/zoolib/source/cxx/zoolib/ZFile_Win.cpp trunk/zoolib/source/cxx/zoolib/ZFunctionChain.h trunk/zoolib/source/cxx/zoolib/ZML.cpp trunk/zoolib/source/cxx/zoolib/ZNet_Local_Win.cpp trunk/zoolib/source/cxx/zoolib/ZNet_Socket.cpp trunk/zoolib/source/cxx/zoolib/ZPromise.h trunk/zoolib/source/cxx/zoolib/ZRef.h trunk/zoolib/source/cxx/zoolib/ZSafeSet.h trunk/zoolib/source/cxx/zoolib/ZStream.h trunk/zoolib/source/cxx/zoolib/ZStreamRW_FIFO.cpp trunk/zoolib/source/cxx/zoolib/ZStream_CRLF.cpp trunk/zoolib/source/cxx/zoolib/ZStrim.h trunk/zoolib/source/cxx/zoolib/ZStrim_CRLF.cpp trunk/zoolib/source/cxx/zoolib/ZUtil_Any.cpp trunk/zoolib/source/cxx/zoolib/ZUtil_Any.h trunk/zoolib/source/cxx/zoolib/ZUtil_CF_Context.h trunk/zoolib/source/cxx/zoolib/ZVisitor.cpp trunk/zoolib/source/cxx/zoolib/ZVisitor.h trunk/zoolib/source/cxx/zoolib/ZWorker.cpp Modified: trunk/zoolib/source/cxx/old/zoolib/ZYad_ZooLibStrim.cpp =================================================================== --- trunk/zoolib/source/cxx/old/zoolib/ZYad_ZooLibStrim.cpp 2012-01-25 19:26:51 UTC (rev 2682) +++ trunk/zoolib/source/cxx/old/zoolib/ZYad_ZooLibStrim.cpp 2012-01-25 19:28:33 UTC (rev 2683) @@ -165,7 +165,6 @@ else if (typeValueLC == "id") oVal = eZType_ID; else if (typeValueLC == "vector") oVal = eZType_Vector; else if (typeValueLC == "type") oVal = eZType_Type; - else if (typeValueLC == "time") oVal = eZType_Time; //## else if (typeValueLC == "name") oVal = eZType_Name; else spThrowParseException("Unknown type name '" + typeValue + "'"); Modified: trunk/zoolib/source/cxx/zoolib/ZAny.cpp =================================================================== --- trunk/zoolib/source/cxx/zoolib/ZAny.cpp 2012-01-25 19:26:51 UTC (rev 2682) +++ trunk/zoolib/source/cxx/zoolib/ZAny.cpp 2012-01-25 19:28:33 UTC (rev 2683) @@ -104,12 +104,12 @@ void ZAny::swap(ZAny& ioOther) { - // Simplify this for now if (fPtr_InPlace || ioOther.fPtr_InPlace) { - ZAny temp = *this; + // Trivial implementation for now + const ZAny temp = *this; *this = ioOther; - ioOther = *this; + ioOther = temp; } else { Modified: trunk/zoolib/source/cxx/zoolib/ZCallable_Bind.h =================================================================== --- trunk/zoolib/source/cxx/zoolib/ZCallable_Bind.h 2012-01-25 19:26:51 UTC (rev 2682) +++ trunk/zoolib/source/cxx/zoolib/ZCallable_Bind.h 2012-01-25 19:28:33 UTC (rev 2683) @@ -2644,8 +2644,6 @@ { if (not iCallable) return null; - if (not iCallable) - return null; return new Callable_L09<typename Callable::Signature> (i0, i1, i2, i3, i4, i5, i6, i7, i8, iCallable); Modified: trunk/zoolib/source/cxx/zoolib/ZCompare.h =================================================================== --- trunk/zoolib/source/cxx/zoolib/ZCompare.h 2012-01-25 19:26:51 UTC (rev 2682) +++ trunk/zoolib/source/cxx/zoolib/ZCompare.h 2012-01-25 19:28:33 UTC (rev 2683) @@ -35,7 +35,7 @@ { protected: ZCompare(const char* iTypeName); - ~ZCompare(); + virtual ~ZCompare(); virtual int Compare(const void* iL, const void* iR) = 0; Modified: trunk/zoolib/source/cxx/zoolib/ZFile_Win.cpp =================================================================== --- trunk/zoolib/source/cxx/zoolib/ZFile_Win.cpp 2012-01-25 19:26:51 UTC (rev 2682) +++ trunk/zoolib/source/cxx/zoolib/ZFile_Win.cpp 2012-01-25 19:28:33 UTC (rev 2683) @@ -543,13 +543,16 @@ while (bufSize < 16384) { vector<char> buffer(bufSize); - DWORD result = ::GetModuleFileNameA(::GetModuleHandleA(nullptr), &buffer[0], bufSize); - if (result < 0) + if (DWORD result = ::GetModuleFileNameA(::GetModuleHandleA(nullptr), &buffer[0], bufSize)) + { + if (result < bufSize) + return sFromFullWinPath(&buffer[0]); + bufSize *= 2; + } + else + { break; - if (result < bufSize) - return sFromFullWinPath(&buffer[0]); - - bufSize *= 2; + } } return null; @@ -1133,13 +1136,16 @@ while (bufSize < 16384) { vector<UTF16> buffer(bufSize); - DWORD result = ::GetModuleFileNameW(::GetModuleHandleW(nullptr), &buffer[0], bufSize); - if (result < 0) + if (DWORD result = ::GetModuleFileNameW(::GetModuleHandleW(nullptr), &buffer[0], bufSize)) + { + if (result < bufSize) + return sFromFullWinPath(&buffer[0]); + bufSize *= 2; + } + else + { break; - if (result < bufSize) - return sFromFullWinPath(&buffer[0]); - - bufSize *= 2; + } } return null; Modified: trunk/zoolib/source/cxx/zoolib/ZFunctionChain.h =================================================================== --- trunk/zoolib/source/cxx/zoolib/ZFunctionChain.h 2012-01-25 19:26:51 UTC (rev 2682) +++ trunk/zoolib/source/cxx/zoolib/ZFunctionChain.h 2012-01-25 19:28:33 UTC (rev 2683) @@ -89,6 +89,9 @@ theHead = this; } + virtual ~ZFunctionChain_T() + {} + virtual bool Invoke(Result& oResult, Param iParam) { return false; } Modified: trunk/zoolib/source/cxx/zoolib/ZML.cpp =================================================================== --- trunk/zoolib/source/cxx/zoolib/ZML.cpp 2012-01-25 19:26:51 UTC (rev 2682) +++ trunk/zoolib/source/cxx/zoolib/ZML.cpp 2012-01-25 19:28:33 UTC (rev 2683) @@ -896,8 +896,7 @@ ZQ<UTF32> theEntityCPQ; const UTF8* current = localSource; const UTF8* priorToEntity; - while (not theEntityCPQ) - { + do { priorToEntity = current; UTF32 theCP; if (not ZUnicode::sReadInc(current, localSourceEnd, theCP)) @@ -928,7 +927,7 @@ theEntityCPQ = theCP; } } - } + } while (not theEntityCPQ); if (theEntityCPQ) { Modified: trunk/zoolib/source/cxx/zoolib/ZNet_Local_Win.cpp =================================================================== --- trunk/zoolib/source/cxx/zoolib/ZNet_Local_Win.cpp 2012-01-25 19:26:51 UTC (rev 2682) +++ trunk/zoolib/source/cxx/zoolib/ZNet_Local_Win.cpp 2012-01-25 19:28:33 UTC (rev 2683) @@ -207,19 +207,18 @@ ZRef<ZNetEndpoint> ZNetListener_Local_Win::Listen() { - bool success = ::ConnectNamedPipe(fHANDLE, &fOVERLAPPED); - -// DWORD err = ::GetLastError(); -// if (!success && (err == ERROR_IO_PENDING || err == ERROR_PIPE_LISTENING)) -// ::WaitForSingleObjectEx(fEvent, INFINITE, TRUE); - - DWORD dummy; - success = ::GetOverlappedResult(fHANDLE, &fOVERLAPPED, &dummy, TRUE); - - ZRef<HANDLE> theHANDLE; - theHANDLE.swap(fHANDLE); - fHANDLE = spCreateNamedPipe(fPath, false); - return new ZNetEndpoint_Local_Win(theHANDLE); + if (::ConnectNamedPipe(fHANDLE, &fOVERLAPPED)) + { + DWORD dummy; + if (::GetOverlappedResult(fHANDLE, &fOVERLAPPED, &dummy, TRUE)) + { + ZRef<HANDLE> theHANDLE; + theHANDLE.swap(fHANDLE); + fHANDLE = spCreateNamedPipe(fPath, false); + return new ZNetEndpoint_Local_Win(theHANDLE); + } + } + return null; } void ZNetListener_Local_Win::CancelListen() Modified: trunk/zoolib/source/cxx/zoolib/ZNet_Socket.cpp =================================================================== --- trunk/zoolib/source/cxx/zoolib/ZNet_Socket.cpp 2012-01-25 19:26:51 UTC (rev 2682) +++ trunk/zoolib/source/cxx/zoolib/ZNet_Socket.cpp 2012-01-25 19:28:33 UTC (rev 2683) @@ -316,30 +316,33 @@ void ZNetEndpoint_Socket::Imp_Read(void* oDest, size_t iCount, size_t* oCountRead) { char* localDest = static_cast<char*>(oDest); - while (iCount) + if (iCount) { - const int result = sReceive(fSocketFD, localDest, iCount); + for (;;) + { + const int result = sReceive(fSocketFD, localDest, iCount); - if (result < 0) - { - const int err = errno; - if (err == EAGAIN) - sWaitReadable(fSocketFD, 1000); - else if (err != EINTR) + if (result < 0) + { + const int err = errno; + if (err == EAGAIN) + sWaitReadable(fSocketFD, 1000); + else if (err != EINTR) + break; + } + else if (result == 0) + { + // result is zero, indicating that the other end has sent FIN. break; + } + else + { + localDest += result; + break; + } } - else if (result == 0) - { - // result is zero, indicating that the other end has sent FIN. - break; - } - else - { - localDest += result; - iCount -= result; - break; - } } + if (oCountRead) *oCountRead = localDest - static_cast<char*>(oDest); } Modified: trunk/zoolib/source/cxx/zoolib/ZPromise.h =================================================================== --- trunk/zoolib/source/cxx/zoolib/ZPromise.h 2012-01-25 19:26:51 UTC (rev 2682) +++ trunk/zoolib/source/cxx/zoolib/ZPromise.h 2012-01-25 19:28:33 UTC (rev 2683) @@ -211,7 +211,7 @@ { return new ZPromise<T>; } // ================================================================================================= -// MARK: - sGetClear +// MARK: - sGetDeliveryClearPromise template <class T> ZRef<ZDelivery<T> > sGetDeliveryClearPromise(ZRef<ZPromise<T> >& ioPromise) Modified: trunk/zoolib/source/cxx/zoolib/ZRef.h =================================================================== --- trunk/zoolib/source/cxx/zoolib/ZRef.h 2012-01-25 19:26:51 UTC (rev 2682) +++ trunk/zoolib/source/cxx/zoolib/ZRef.h 2012-01-25 19:28:33 UTC (rev 2683) @@ -206,18 +206,15 @@ return true; } - static T* sCFRetain(T* iP) + static T* sCFAllocatorRetain(T* iP) { if (iP) sRetain(*iP); return iP; } - static void sCFRelease(T* iP) - { - if (iP) - sRelease(*iP); - } + static void sCFAllocatorRelease(T* iP) + { spRelease(iP); } private: T* fP; @@ -402,18 +399,16 @@ return true; } - static T* sCFRetain(T* iP) + static T* sCFAllocatorRetain(T* iP) { if (iP) sRetain_T(iP); return iP; } - static T* sCFRelease(T* iP) - { - if (iP) - sRelease_T(iP); - } + static void sCFAllocatorRelease(T* iP) + { spRelease(iP); } + private: T* fP; }; Modified: trunk/zoolib/source/cxx/zoolib/ZSafeSet.h =================================================================== --- trunk/zoolib/source/cxx/zoolib/ZSafeSet.h 2012-01-25 19:26:51 UTC (rev 2682) +++ trunk/zoolib/source/cxx/zoolib/ZSafeSet.h 2012-01-25 19:28:33 UTC (rev 2683) @@ -126,7 +126,7 @@ return fList.size(); } - bool pEmpty() const + bool pIsEmpty() const { ZAcqMtx acq(fMtx); return fList.empty(); @@ -247,8 +247,8 @@ size_t Size() const { return fRep->pSize(); } - bool Empty() const - { return fRep->pEmpty(); } + bool IsEmpty() const + { return fRep->pIsEmpty(); } bool Insert(const T& iT) { return fRep->pInsert(iT); } Modified: trunk/zoolib/source/cxx/zoolib/ZStream.h =================================================================== --- trunk/zoolib/source/cxx/zoolib/ZStream.h 2012-01-25 19:26:51 UTC (rev 2682) +++ trunk/zoolib/source/cxx/zoolib/ZStream.h 2012-01-25 19:28:33 UTC (rev 2683) @@ -96,7 +96,7 @@ ZStreamR reference, you must work with some derived class. */ //@{ ZStreamR() {} - ~ZStreamR() {} + virtual ~ZStreamR() {} ZStreamR(const ZStreamR&) {} ZStreamR& operator=(const ZStreamR&) { return *this; } //@} @@ -356,7 +356,7 @@ ZStreamW reference, you must work with some derived class. */ //@{ ZStreamW() {} - ~ZStreamW() {} + virtual ~ZStreamW() {} ZStreamW(const ZStreamW&) {} ZStreamW& operator=(const ZStreamW&) { return *this; } //@} Modified: trunk/zoolib/source/cxx/zoolib/ZStreamRW_FIFO.cpp =================================================================== --- trunk/zoolib/source/cxx/zoolib/ZStreamRW_FIFO.cpp 2012-01-25 19:26:51 UTC (rev 2682) +++ trunk/zoolib/source/cxx/zoolib/ZStreamRW_FIFO.cpp 2012-01-25 19:28:33 UTC (rev 2683) @@ -57,24 +57,26 @@ ZAcqMtx acq(fMutex); ++fUserCount; uint8* localDest = static_cast<uint8*>(oDest); - while (iCount) + if (iCount) { - const size_t countToCopy = min(iCount, fBuffer.size()); - if (countToCopy == 0) + for (;;) { - if (fClosed) + const size_t countToCopy = min(iCount, fBuffer.size()); + if (countToCopy == 0) + { + if (fClosed) + break; + fCondition_Read.Wait(fMutex); + } + else + { + copy(fBuffer.begin(), fBuffer.begin() + countToCopy, localDest); + fBuffer.erase(fBuffer.begin(), fBuffer.begin() + countToCopy); + localDest += countToCopy; + fCondition_Write.Broadcast(); break; - fCondition_Read.Wait(fMutex); + } } - else - { - copy(fBuffer.begin(), fBuffer.begin() + countToCopy, localDest); - fBuffer.erase(fBuffer.begin(), fBuffer.begin() + countToCopy); - localDest += countToCopy; - iCount -= countToCopy; - fCondition_Write.Broadcast(); - break; - } } if (oCountRead) *oCountRead = localDest - static_cast<uint8*>(oDest); Modified: trunk/zoolib/source/cxx/zoolib/ZStream_CRLF.cpp =================================================================== --- trunk/zoolib/source/cxx/zoolib/ZStream_CRLF.cpp 2012-01-25 19:26:51 UTC (rev 2682) +++ trunk/zoolib/source/cxx/zoolib/ZStream_CRLF.cpp 2012-01-25 19:28:33 UTC (rev 2683) @@ -248,10 +248,7 @@ size_t countWritten; fStreamSink.Write(localSource, innerSource - localSource, &countWritten); if (countWritten == 0) - { - countRemaining = 0; break; - } if (oCountWritten) *oCountWritten += countWritten; countRemaining -= countWritten; Modified: trunk/zoolib/source/cxx/zoolib/ZStrim.h =================================================================== --- trunk/zoolib/source/cxx/zoolib/ZStrim.h 2012-01-25 19:26:51 UTC (rev 2682) +++ trunk/zoolib/source/cxx/zoolib/ZStrim.h 2012-01-25 19:28:33 UTC (rev 2683) @@ -63,7 +63,7 @@ ZStrimR reference, you must work with some derived class. */ //@{ ZStrimR() {} - ~ZStrimR() {} + virtual ~ZStrimR() {} ZStrimR(const ZStrimR&) {} ZStrimR& operator=(const ZStrimR&) { return *this; } //@} @@ -196,7 +196,7 @@ ZStrimW reference, you must work with some derived class. */ //@{ ZStrimW() {} - ~ZStrimW() {} + virtual ~ZStrimW() {} ZStrimW(const ZStrimW&) {} ZStrimW& operator=(const ZStrimW&) { return *this; } //@} Modified: trunk/zoolib/source/cxx/zoolib/ZStrim_CRLF.cpp =================================================================== --- trunk/zoolib/source/cxx/zoolib/ZStrim_CRLF.cpp 2012-01-25 19:26:51 UTC (rev 2682) +++ trunk/zoolib/source/cxx/zoolib/ZStrim_CRLF.cpp 2012-01-25 19:28:33 UTC (rev 2683) @@ -161,10 +161,7 @@ size_t countWritten; fStrimSink.Write(localSource, innerSource - localSource, &countWritten); if (countWritten == 0) - { - iCountCU = 0; break; - } iCountCU -= countWritten; localSource += countWritten; fLastWasCR = false; Modified: trunk/zoolib/source/cxx/zoolib/ZUtil_Any.cpp =================================================================== --- trunk/zoolib/source/cxx/zoolib/ZUtil_Any.cpp 2012-01-25 19:26:51 UTC (rev 2682) +++ trunk/zoolib/source/cxx/zoolib/ZUtil_Any.cpp 2012-01-25 19:28:33 UTC (rev 2683) @@ -175,40 +175,4 @@ return 0.0; } -ZQ<double> sQCoerceReal(const ZAny& iAny) - { - if (false) - {} - else if (const float* theVal = iAny.PGet<float>()) - return *theVal; - else if (const double* theVal = iAny.PGet<double>()) - return *theVal; - - return null; - } - -bool sQCoerceReal(const ZAny& iAny, double& oVal) - { - if (ZQ<double> qDouble = sQCoerceReal(iAny)) - { - oVal = qDouble.Get(); - return true; - } - return false; - } - -double sDCoerceReal(double iDefault, const ZAny& iAny) - { - if (ZQ<double> qDouble = sQCoerceReal(iAny)) - return qDouble.Get(); - return iDefault; - } - -double sCoerceReal(const ZAny& iAny) - { - if (ZQ<double> qDouble = sQCoerceReal(iAny)) - return qDouble.Get(); - return 0.0; - } - } // namespace ZooLib Modified: trunk/zoolib/source/cxx/zoolib/ZUtil_Any.h =================================================================== --- trunk/zoolib/source/cxx/zoolib/ZUtil_Any.h 2012-01-25 19:26:51 UTC (rev 2682) +++ trunk/zoolib/source/cxx/zoolib/ZUtil_Any.h 2012-01-25 19:28:33 UTC (rev 2683) @@ -46,11 +46,18 @@ double sCoerceRat(const ZAny& iAny); // Old names -ZQ<double> sQCoerceReal(const ZAny& iAny); -bool sQCoerceReal(const ZAny& iAny, double& oVal); -double sDCoerceReal(double iDefault, const ZAny& iAny); -double sCoerceReal(const ZAny& iAny); +inline ZQ<double> sQCoerceReal(const ZAny& iAny) + { return sQCoerceRat(iAny); } +inline bool sQCoerceReal(const ZAny& iAny, double& oVal) + { return sQCoerceRat(iAny, oVal); } + +inline double sDCoerceReal(double iDefault, const ZAny& iAny) + { return sDCoerceRat(iDefault, iAny); } + +inline double sCoerceReal(const ZAny& iAny) + { return sCoerceRat(iAny); } + } // namespace ZooLib #endif // __ZUtil_Any_h__ Modified: trunk/zoolib/source/cxx/zoolib/ZUtil_CF_Context.h =================================================================== --- trunk/zoolib/source/cxx/zoolib/ZUtil_CF_Context.h 2012-01-25 19:26:51 UTC (rev 2682) +++ trunk/zoolib/source/cxx/zoolib/ZUtil_CF_Context.h 2012-01-25 19:28:33 UTC (rev 2683) @@ -72,8 +72,8 @@ : fT(T()) { fT.info = iRef.Get(); - fT.retain = (CFAllocatorRetainCallBack)&ZRef<O>::sCFRetain; - fT.release = (CFAllocatorReleaseCallBack)&ZRef<O>::sCFRelease; + fT.retain = (CFAllocatorRetainCallBack)&ZRef<O>::sCFAllocatorRetain; + fT.release = (CFAllocatorReleaseCallBack)&ZRef<O>::sCFAllocatorRelease; fT.retain(fT.info); } Modified: trunk/zoolib/source/cxx/zoolib/ZVisitor.cpp =================================================================== --- trunk/zoolib/source/cxx/zoolib/ZVisitor.cpp 2012-01-25 19:26:51 UTC (rev 2682) +++ trunk/zoolib/source/cxx/zoolib/ZVisitor.cpp 2012-01-25 19:28:33 UTC (rev 2683) @@ -31,6 +31,9 @@ // ================================================================================================= // MARK: - ZVisitor +ZVisitor::~ZVisitor() + {} + void ZVisitor::Visit(const ZRef<ZVisitee>& iRep) {} Modified: trunk/zoolib/source/cxx/zoolib/ZVisitor.h =================================================================== --- trunk/zoolib/source/cxx/zoolib/ZVisitor.h 2012-01-25 19:26:51 UTC (rev 2682) +++ trunk/zoolib/source/cxx/zoolib/ZVisitor.h 2012-01-25 19:28:33 UTC (rev 2683) @@ -44,6 +44,7 @@ class ZVisitor { public: + virtual ~ZVisitor(); virtual void Visit(const ZRef<ZVisitee>& iRep); }; Modified: trunk/zoolib/source/cxx/zoolib/ZWorker.cpp =================================================================== --- trunk/zoolib/source/cxx/zoolib/ZWorker.cpp 2012-01-25 19:26:51 UTC (rev 2682) +++ trunk/zoolib/source/cxx/zoolib/ZWorker.cpp 2012-01-25 19:28:33 UTC (rev 2683) @@ -160,7 +160,7 @@ bool ZWorker::Attach(ZRef<ZCaller> iCaller) { ZGuardRMtx guard(fMtx); - if (!fCaller) + if (not fCaller) { fCaller = iCaller; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |