summaryrefslogtreecommitdiff
path: root/indra/llprimitive
diff options
context:
space:
mode:
Diffstat (limited to 'indra/llprimitive')
-rw-r--r--indra/llprimitive/lldaeloader.cpp7
-rw-r--r--indra/llprimitive/llmodelloader.cpp7
-rw-r--r--indra/llprimitive/llmodelloader.h4
3 files changed, 10 insertions, 8 deletions
diff --git a/indra/llprimitive/lldaeloader.cpp b/indra/llprimitive/lldaeloader.cpp
index a11f9b5ca2..bfcd84a43d 100644
--- a/indra/llprimitive/lldaeloader.cpp
+++ b/indra/llprimitive/lldaeloader.cpp
@@ -204,12 +204,15 @@ LLModel::EModelStatus load_face_from_dom_triangles(
if (idx_stride <= 0
|| (pos_source && pos_offset >= idx_stride)
+ || (pos_source && pos_offset < 0)
|| (tc_source && tc_offset >= idx_stride)
- || (norm_source && norm_offset >= idx_stride))
+ || (tc_source && tc_offset < 0)
+ || (norm_source && norm_offset >= idx_stride)
+ || (norm_source && norm_offset < 0))
{
// Looks like these offsets should fit inside idx_stride
// Might be good idea to also check idx.getCount()%idx_stride != 0
- LL_WARNS() << "Invalid pos_offset " << pos_offset << ", tc_offset " << tc_offset << " or norm_offset " << norm_offset << LL_ENDL;
+ LL_WARNS() << "Invalid idx_stride " << idx_stride << ", pos_offset " << pos_offset << ", tc_offset " << tc_offset << " or norm_offset " << norm_offset << LL_ENDL;
return LLModel::BAD_ELEMENT;
}
diff --git a/indra/llprimitive/llmodelloader.cpp b/indra/llprimitive/llmodelloader.cpp
index 9521fec54f..6ff62bc282 100644
--- a/indra/llprimitive/llmodelloader.cpp
+++ b/indra/llprimitive/llmodelloader.cpp
@@ -33,6 +33,7 @@
#include "llmatrix4a.h"
#include <boost/bind.hpp>
+#include <boost/exception/diagnostic_information.hpp>
std::list<LLModelLoader*> LLModelLoader::sActiveLoaderList;
@@ -123,7 +124,6 @@ LLModelLoader::LLModelLoader(
, mLod(lod)
, mTrySLM(false)
, mFirstTransform(true)
-, mNumOfFetchingTextures(0)
, mLoadCallback(load_cb)
, mJointLookupFunc(joint_lookup_func)
, mTextureLoadFunc(texture_load_func)
@@ -134,6 +134,7 @@ LLModelLoader::LLModelLoader(
, mNoNormalize(false)
, mNoOptimize(false)
, mCacheOnlyHitIfRigged(false)
+, mTexturesNeedScaling(false)
, mMaxJointsPerMesh(maxJointsPerMesh)
, mGeneratedModelLimit(modelLimit)
, mDebugMode(debugMode)
@@ -184,7 +185,7 @@ void LLModelLoader::run()
LLSD args;
args["Message"] = "UnknownException";
args["FILENAME"] = mFilename;
- args["EXCEPTION"] = "Unknown exception";
+ args["EXCEPTION"] = boost::current_exception_diagnostic_information();
mWarningsArray.append(args);
setLoadState(ERROR_PARSING);
}
@@ -669,7 +670,7 @@ void LLModelLoader::loadTextures()
if(!material.mDiffuseMapFilename.empty())
{
- mNumOfFetchingTextures += mTextureLoadFunc(material, mOpaqueData);
+ mTextureLoadFunc(material, mOpaqueData);
}
}
}
diff --git a/indra/llprimitive/llmodelloader.h b/indra/llprimitive/llmodelloader.h
index 06a17f006e..335d809386 100644
--- a/indra/llprimitive/llmodelloader.h
+++ b/indra/llprimitive/llmodelloader.h
@@ -109,6 +109,7 @@ public:
bool mTrySLM;
bool mCacheOnlyHitIfRigged; // ignore cached SLM if it does not contain rig info (and we want rig info)
+ bool mTexturesNeedScaling;
model_list mModelList;
// The scene is pretty much what ends up getting loaded for upload. Basically assign things to this guy if you want something uploaded.
@@ -170,9 +171,6 @@ public:
void stretch_extents(const LLModel* model, const LLMatrix4& mat);
- S32 mNumOfFetchingTextures ; // updated in the main thread
- bool areTexturesReady() { return !mNumOfFetchingTextures; } // called in the main thread.
-
bool verifyCount( int expected, int result );
//Determines the viability of an asset to be used as an avatar rig (w or w/o joint upload caps)