[Scummvm-git-logs] scummvm master -> 0b173ab98bd08942295f980a7d68d0bdfd34cd99

grisenti noreply at scummvm.org
Fri Aug 11 13:21:57 UTC 2023


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
0b173ab98b HPL1: replace &var[0] pattern with call to data()


Commit: 0b173ab98bd08942295f980a7d68d0bdfd34cd99
    https://github.com/scummvm/scummvm/commit/0b173ab98bd08942295f980a7d68d0bdfd34cd99
Author: grisenti (emanuele at grisenti.net)
Date: 2023-08-11T15:21:30+02:00

Commit Message:
HPL1: replace &var[0] pattern with call to data()

resolves asserts in Common::Array::operator[] for assets loaded in level "Lake Utuqaq"

Changed paths:
    engines/hpl1/engine/impl/MeshLoaderColladaHelpers.cpp
    engines/hpl1/engine/impl/VertexBufferVBO.cpp
    engines/hpl1/engine/scene/Light3D.cpp


diff --git a/engines/hpl1/engine/impl/MeshLoaderColladaHelpers.cpp b/engines/hpl1/engine/impl/MeshLoaderColladaHelpers.cpp
index a0a9a9ac3c4..6e4604d0761 100644
--- a/engines/hpl1/engine/impl/MeshLoaderColladaHelpers.cpp
+++ b/engines/hpl1/engine/impl/MeshLoaderColladaHelpers.cpp
@@ -498,7 +498,7 @@ iVertexBuffer *cMeshLoaderCollada::CreateVertexBuffer(cColladaGeometry &aGeometr
 	}
 
 	// Add tangents
-	memcpy(pVtxBuff->GetArray(eVertexFlag_Texture1), &aGeometry.mvTangents[0],
+	memcpy(pVtxBuff->GetArray(eVertexFlag_Texture1), aGeometry.mvTangents.data(),
 		   aGeometry.mvTangents.size() * sizeof(float));
 
 	// Add indices
diff --git a/engines/hpl1/engine/impl/VertexBufferVBO.cpp b/engines/hpl1/engine/impl/VertexBufferVBO.cpp
index 660d63329b0..fa98985a03a 100644
--- a/engines/hpl1/engine/impl/VertexBufferVBO.cpp
+++ b/engines/hpl1/engine/impl/VertexBufferVBO.cpp
@@ -124,7 +124,7 @@ cBoundingVolume cVertexBufferVBO::CreateBoundingVolume() {
 
 	int lNum = cMath::Log2ToInt((int)eVertexFlag_Position);
 
-	bv.AddArrayPoints(&(mvVertexArray[lNum][0]), GetVertexNum());
+	bv.AddArrayPoints(mvVertexArray[lNum].data(), GetVertexNum());
 	bv.CreateFromPoints(kvVertexElements[cMath::Log2ToInt(eVertexFlag_Position)]);
 
 	return bv;
@@ -172,7 +172,7 @@ bool cVertexBufferVBO::Compile(tVertexCompileFlag aFlags) {
 			glBindBuffer(GL_ARRAY_BUFFER, mvArrayHandle[i]);
 
 			glBufferData(GL_ARRAY_BUFFER, mvVertexArray[i].size() * sizeof(float),
-						 &(mvVertexArray[i][0]), usageType);
+						 mvVertexArray[i].data(), usageType);
 
 			glBindBuffer(GL_ARRAY_BUFFER, 0);
 
@@ -184,7 +184,7 @@ bool cVertexBufferVBO::Compile(tVertexCompileFlag aFlags) {
 	GL_CHECK(glGenBuffers(1, (GLuint *)&mlElementHandle));
 	GL_CHECK(glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, mlElementHandle));
 	GL_CHECK(glBufferData(GL_ELEMENT_ARRAY_BUFFER, GetIndexNum() * sizeof(unsigned int),
-						  &mvIndexArray[0], usageType));
+						  mvIndexArray.data(), usageType));
 	GL_CHECK(glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0));
 
 	// Log("VBO compile done!\n");
@@ -211,7 +211,7 @@ void cVertexBufferVBO::UpdateData(tVertexFlag aTypes, bool abIndices) {
 						 NULL, usageType); // Clear memory
 
 			glBufferData(GL_ARRAY_BUFFER, mvVertexArray[i].size() * sizeof(float),
-						 &(mvVertexArray[i][0]), usageType);
+						 mvVertexArray[i].data(), usageType);
 		}
 	}
 	GL_CHECK_FN();
@@ -225,7 +225,7 @@ void cVertexBufferVBO::UpdateData(tVertexFlag aTypes, bool abIndices) {
 		//	NULL, usageType);
 
 		GL_CHECK(glBufferData(GL_ELEMENT_ARRAY_BUFFER, GetIndexNum() * sizeof(unsigned int),
-							  &mvIndexArray[0], usageType));
+							  mvIndexArray.data(), usageType));
 
 		GL_CHECK(glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0));
 	}
@@ -375,13 +375,13 @@ void cVertexBufferVBO::UnBind() {
 float *cVertexBufferVBO::GetArray(tVertexFlag aType) {
 	int idx = cMath::Log2ToInt((int)aType);
 
-	return &mvVertexArray[idx][0];
+	return mvVertexArray[idx].data();
 }
 
 //-----------------------------------------------------------------------
 
 unsigned int *cVertexBufferVBO::GetIndices() {
-	return &mvIndexArray[0];
+	return mvIndexArray.data();
 }
 
 //-----------------------------------------------------------------------
@@ -417,7 +417,7 @@ iVertexBuffer *cVertexBufferVBO::CreateCopy(eVertexBufferUsageType aUsageType) {
 			pVtxBuff->ResizeArray(kvVertexFlags[i], (int)mvVertexArray[i].size());
 
 			memcpy(pVtxBuff->GetArray(kvVertexFlags[i]),
-				   &mvVertexArray[i][0], mvVertexArray[i].size() * sizeof(float));
+				   mvVertexArray[i].data(), mvVertexArray[i].size() * sizeof(float));
 		}
 	}
 
diff --git a/engines/hpl1/engine/scene/Light3D.cpp b/engines/hpl1/engine/scene/Light3D.cpp
index e0c9d613071..687208a66cd 100644
--- a/engines/hpl1/engine/scene/Light3D.cpp
+++ b/engines/hpl1/engine/scene/Light3D.cpp
@@ -641,7 +641,7 @@ void iLight3D::RenderShadow(iRenderable *apObject, cRenderSettings *apRenderSett
 
 	/////////////////////////////////////////////////////////
 	// Iterate faces and check which are facing the light.
-	cTriangleData *pTriangles = &(*pSubEntity->GetTriangleVecPtr())[0];
+	cTriangleData *pTriangles = pSubEntity->GetTriangleVecPtr()->data();
 	const int lTriNum = pSubEntity->GetTriangleNum();
 	for (int tri = 0, idx = 0; tri < lTriNum; tri++, idx += 3) {
 		cTriangleData &Tri = pTriangles[tri];
@@ -660,7 +660,7 @@ void iLight3D::RenderShadow(iRenderable *apObject, cRenderSettings *apRenderSett
 	// Iterate edges and find possible silhouette
 	// Get edge pointer, index pointer and offset
 	unsigned int *pCurrentIndexPos = &mpIndexArray[0];
-	const cTriEdge *pEdges = &(*pSubMesh->GetEdgeVecPtr())[0];
+	const cTriEdge *pEdges = pSubMesh->GetEdgeVecPtr()->data();
 	int lOffset = pSubEntity->GetVertexBuffer()->GetVertexNum();
 	// Iterate
 	const int lEdgeNum = pSubMesh->GetEdgeNum();




More information about the Scummvm-git-logs mailing list