diff options
| author | andreykproductengine <akleshchev@productengine.com> | 2015-08-20 20:25:58 +0300 | 
|---|---|---|
| committer | andreykproductengine <akleshchev@productengine.com> | 2015-08-20 20:25:58 +0300 | 
| commit | bb7ac16318cb51c7a0863ad349fbd0511f199d21 (patch) | |
| tree | 95d5df4cc67e0fd4c458edaf53e86166c67fc272 /indra/llmath | |
| parent | b3916451c178fe62775b9ba9e5a66da21f5ac2b8 (diff) | |
MAINT-5532 FIXED upload of duck.dae from MAINT-4483 crashes mac viewer
Diffstat (limited to 'indra/llmath')
| -rwxr-xr-x | indra/llmath/llvolume.cpp | 25 | 
1 files changed, 14 insertions, 11 deletions
| diff --git a/indra/llmath/llvolume.cpp b/indra/llmath/llvolume.cpp index c2198b91a7..4703e6cf1a 100755 --- a/indra/llmath/llvolume.cpp +++ b/indra/llmath/llvolume.cpp @@ -6072,7 +6072,7 @@ void LLVolumeFace::pushVertex(const LLVector4a& pos, const LLVector4a& norm, con  	if (new_verts > mNumAllocatedVertices)  	{  -		//double buffer size on expansion +		// double buffer size on expansion  		new_verts *= 2;  		S32 new_tc_size = ((new_verts*8)+0xF) & ~0xF; @@ -6088,18 +6088,21 @@ void LLVolumeFace::pushVertex(const LLVector4a& pos, const LLVector4a& norm, con  		mNormals = mPositions+new_verts;  		mTexCoords = (LLVector2*) (mNormals+new_verts); -	//positions -		LLVector4a::memcpyNonAliased16((F32*) mPositions, (F32*) old_buf, old_vsize); -	 -	//normals -		LLVector4a::memcpyNonAliased16((F32*) mNormals, (F32*) (old_buf+mNumVertices), old_vsize); +		if (old_buf != NULL) +		{ +			// copy old positions into new buffer +			LLVector4a::memcpyNonAliased16((F32*)mPositions, (F32*)old_buf, old_vsize); -	//tex coords -		LLVector4a::memcpyNonAliased16((F32*) mTexCoords, (F32*) (old_buf+mNumVertices*2), old_tc_size); +			// normals +			LLVector4a::memcpyNonAliased16((F32*)mNormals, (F32*)(old_buf + mNumVertices), old_vsize); -	//just clear tangents -	ll_aligned_free_16(mTangents); -	mTangents = NULL; +			// tex coords +			LLVector4a::memcpyNonAliased16((F32*)mTexCoords, (F32*)(old_buf + mNumVertices * 2), old_tc_size); +		} + +		// just clear tangents +		ll_aligned_free_16(mTangents); +		mTangents = NULL;  		ll_aligned_free<64>(old_buf);  		mNumAllocatedVertices = new_verts; | 
