[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