From b8ce030a3eeb857e8bfe0d67df8952b93d8b7e6d Mon Sep 17 00:00:00 2001 From: Richard Linden Date: Mon, 28 Nov 2011 19:16:49 -0800 Subject: [PATCH 1/2] bumped up MSVC warning level to 3 to catch more stuff that gcc catches --- indra/cmake/00-Common.cmake | 4 ++-- indra/llcommon/llpreprocessor.h | 1 + indra/llplugin/llpluginclassmedia.h | 2 +- indra/llplugin/llplugininstance.h | 2 +- indra/llplugin/llpluginmessagepipe.h | 2 +- indra/llplugin/llpluginprocessparent.h | 2 +- indra/llprimitive/llmodel.cpp | 9 ++++++++- indra/llrender/llvertexbuffer.cpp | 2 +- indra/newview/llfloatermodelpreview.cpp | 8 ++++++++ indra/newview/llvovolume.cpp | 2 +- indra/newview/llvovolume.h | 6 ++++-- 11 files changed, 29 insertions(+), 11 deletions(-) diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake index c5b09bcb42..43f75b9f51 100755 --- a/indra/cmake/00-Common.cmake +++ b/indra/cmake/00-Common.cmake @@ -46,7 +46,7 @@ if (WINDOWS) set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /Od /Zi /MDd /MP -D_SCL_SECURE_NO_WARNINGS=1" CACHE STRING "C++ compiler debug options" FORCE) set(CMAKE_CXX_FLAGS_RELWITHDEBINFO - "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /Od /Zi /MD /MP /Ob2 -D_SECURE_STL=0" + "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /Od /Zi /MD /MP /Ob0 -D_SECURE_STL=0" CACHE STRING "C++ compiler release-with-debug options" FORCE) set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${LL_CXX_FLAGS} /O2 /Zi /MD /MP /Ob2 /Oi /Ot /GF /Gy /arch:SSE2 -D_SECURE_STL=0 -D_HAS_ITERATOR_DEBUGGING=0" @@ -64,7 +64,7 @@ if (WINDOWS) /D_UNICODE /GS /TP - /W2 + /W3 /c /Zc:forScope /nologo diff --git a/indra/llcommon/llpreprocessor.h b/indra/llcommon/llpreprocessor.h index 17a4287538..31d5f3d2c7 100644 --- a/indra/llcommon/llpreprocessor.h +++ b/indra/llcommon/llpreprocessor.h @@ -151,6 +151,7 @@ #pragma warning (disable : 4251) // member needs to have dll-interface to be used by clients of class #pragma warning (disable : 4275) // non dll-interface class used as base for dll-interface class +#pragma warning (disable : 4018) // '<' : signed/unsigned mismatch #endif // LL_MSVC #if LL_WINDOWS diff --git a/indra/llplugin/llpluginclassmedia.h b/indra/llplugin/llpluginclassmedia.h index 26fff7a614..6d757f3982 100644 --- a/indra/llplugin/llpluginclassmedia.h +++ b/indra/llplugin/llpluginclassmedia.h @@ -41,7 +41,7 @@ class LLPluginClassMedia : public LLPluginProcessParentOwner LOG_CLASS(LLPluginClassMedia); public: LLPluginClassMedia(LLPluginClassMediaOwner *owner); - ~LLPluginClassMedia(); + virtual ~LLPluginClassMedia(); // local initialization, called by the media manager when creating a source bool init(const std::string &launcher_filename, diff --git a/indra/llplugin/llplugininstance.h b/indra/llplugin/llplugininstance.h index 3643a15d8c..e6926c3e37 100644 --- a/indra/llplugin/llplugininstance.h +++ b/indra/llplugin/llplugininstance.h @@ -39,7 +39,7 @@ class LLPluginInstanceMessageListener { public: - ~LLPluginInstanceMessageListener(); + virtual ~LLPluginInstanceMessageListener(); /** Plugin receives message from plugin loader shell. */ virtual void receivePluginMessage(const std::string &message) = 0; }; diff --git a/indra/llplugin/llpluginmessagepipe.h b/indra/llplugin/llpluginmessagepipe.h index beb942c0fe..c6f1686bf4 100644 --- a/indra/llplugin/llpluginmessagepipe.h +++ b/indra/llplugin/llpluginmessagepipe.h @@ -40,7 +40,7 @@ class LLPluginMessagePipeOwner LOG_CLASS(LLPluginMessagePipeOwner); public: LLPluginMessagePipeOwner(); - ~LLPluginMessagePipeOwner(); + virtual ~LLPluginMessagePipeOwner(); // called with incoming messages virtual void receiveMessageRaw(const std::string &message) = 0; diff --git a/indra/llplugin/llpluginprocessparent.h b/indra/llplugin/llpluginprocessparent.h index 8b9c830f79..d64900ca1f 100644 --- a/indra/llplugin/llpluginprocessparent.h +++ b/indra/llplugin/llpluginprocessparent.h @@ -41,7 +41,7 @@ class LLPluginProcessParentOwner { public: - ~LLPluginProcessParentOwner(); + virtual ~LLPluginProcessParentOwner(); virtual void receivePluginMessage(const LLPluginMessage &message) = 0; virtual bool receivePluginMessageEarly(const LLPluginMessage &message) {return false;}; // This will only be called when the plugin has died unexpectedly diff --git a/indra/llprimitive/llmodel.cpp b/indra/llprimitive/llmodel.cpp index 6e4bb7ec97..cb32a510b8 100644 --- a/indra/llprimitive/llmodel.cpp +++ b/indra/llprimitive/llmodel.cpp @@ -31,11 +31,18 @@ #include "llconvexdecomposition.h" #include "llsdserialize.h" #include "llvector4a.h" - +#if LL_MSVC +#pragma warning (disable : 4263) +#pragma warning (disable : 4264) +#endif #include "dae.h" #include "dae/daeErrorHandler.h" #include "dom/domConstants.h" #include "dom/domMesh.h" +#if LL_MSVC +#pragma warning (default : 4263) +#pragma warning (default : 4264) +#endif #ifdef LL_STANDALONE # include diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp index 8fd1193780..ad2385dcf4 100644 --- a/indra/llrender/llvertexbuffer.cpp +++ b/indra/llrender/llvertexbuffer.cpp @@ -84,7 +84,7 @@ public: #endif } - ~LLGLSyncFence() + virtual ~LLGLSyncFence() { #ifdef GL_ARB_sync if (mSync) diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index 1515bf9f49..01955839da 100644 --- a/indra/newview/llfloatermodelpreview.cpp +++ b/indra/newview/llfloatermodelpreview.cpp @@ -26,6 +26,10 @@ #include "llviewerprecompiledheaders.h" +#if LL_MSVC +#pragma warning (disable : 4263) +#pragma warning (disable : 4264) +#endif #include "dae.h" //#include "dom.h" #include "dom/domAsset.h" @@ -47,6 +51,10 @@ #include "dom/domScale.h" #include "dom/domTranslate.h" #include "dom/domVisual_scene.h" +#if LL_MSVC +#pragma warning (default : 4263) +#pragma warning (default : 4264) +#endif #include "llfloatermodelpreview.h" diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 702adb7441..f78eac3ddb 100755 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -3278,7 +3278,7 @@ void LLVOVolume::updateRenderComplexity() mRenderComplexity_current = 0; } -U32 LLVOVolume::getTriangleCount() const +U32 LLVOVolume::getTriangleCount() { U32 count = 0; LLVolume* volume = getVolume(); diff --git a/indra/newview/llvovolume.h b/indra/newview/llvovolume.h index 87f1c8932f..036d04d0ed 100644 --- a/indra/newview/llvovolume.h +++ b/indra/newview/llvovolume.h @@ -131,9 +131,11 @@ public: /*virtual*/ const LLMatrix4 getRenderMatrix() const; typedef std::map texture_cost_t; U32 getRenderCost(texture_cost_t &textures) const; - /*virtual*/ F32 getStreamingCost(S32* bytes = NULL, S32* visible_bytes = NULL, F32* unscaled_value = NULL) const; - /*virtual*/ U32 getTriangleCount() const; + F32 getStreamingCost(S32* bytes, S32* visible_bytes, F32* unscaled_value) const; + /*virtual*/ F32 getStreamingCost(S32* bytes = NULL, S32* visible_bytes = NULL) { return getStreamingCost(bytes, visible_bytes, NULL); } + + /*virtual*/ U32 getTriangleCount(); /*virtual*/ U32 getHighLODTriangleCount(); /*virtual*/ BOOL lineSegmentIntersect(const LLVector3& start, const LLVector3& end, S32 face = -1, // which face to check, -1 = ALL_SIDES From f391ec367839583a0bdb98cc666a52c7f0faffd9 Mon Sep 17 00:00:00 2001 From: ziree Date: Fri, 20 Jan 2012 22:00:56 +0100 Subject: [PATCH 2/2] Fix crashes when curl runs out of handles. Proposed fix for FIRE-4772 FIRE-4773 --- indra/llmessage/llurlrequest.cpp | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/indra/llmessage/llurlrequest.cpp b/indra/llmessage/llurlrequest.cpp index 801b3715a9..26931bcb42 100644 --- a/indra/llmessage/llurlrequest.cpp +++ b/indra/llmessage/llurlrequest.cpp @@ -84,8 +84,15 @@ LLURLRequestDetail::LLURLRequestDetail() : LLMemType m1(LLMemType::MTYPE_IO_URL_REQUEST); mCurlRequest = new LLCurlEasyRequest(); + if(!mCurlRequest) + { + lldebugs << "failed to allocate new curl request." << llendl; + return; + } + if(!mCurlRequest->isValid()) //failed. { + lldebugs << "new curl request is not valid." << llendl; delete mCurlRequest ; mCurlRequest = NULL ; } @@ -269,7 +276,7 @@ void LLURLRequest::setModifiedSince(const time_t &if_modified_since) //virtual bool LLURLRequest::isValid() { - return mDetail->mCurlRequest && mDetail->mCurlRequest->isValid(); + return mDetail && mDetail->mCurlRequest && mDetail->mCurlRequest->isValid(); } // virtual @@ -469,6 +476,18 @@ void LLURLRequest::initialize() LLMemType m1(LLMemType::MTYPE_IO_URL_REQUEST); mState = STATE_INITIALIZED; mDetail = new LLURLRequestDetail; + if(!mDetail) + { + lldebugs << "LLURLRequestDetail() failed." << llendl; + return; + } + + if(!mDetail->mCurlRequest) + { + lldebugs << "mCurlRequest==0!" << llendl; + return; + } + mDetail->mCurlRequest->setopt(CURLOPT_NOSIGNAL, 1); mDetail->mCurlRequest->setWriteCallback(&downCallback, (void*)this); mDetail->mCurlRequest->setReadCallback(&upCallback, (void*)this);