Add bound checks.
parent
ce4cb39302
commit
5a1276032e
|
@ -330,6 +330,10 @@ void glTFImporter::ImportMeshes(glTF::Asset& r)
|
||||||
|
|
||||||
case PrimitiveMode_LINES: {
|
case PrimitiveMode_LINES: {
|
||||||
nFaces = count / 2;
|
nFaces = count / 2;
|
||||||
|
if (nFaces * 2 != count) {
|
||||||
|
ASSIMP_LOG_WARN("The number of vertices was not compatible with the LINES mode. Some vertices were dropped.");
|
||||||
|
count = nFaces * 2;
|
||||||
|
}
|
||||||
faces = new aiFace[nFaces];
|
faces = new aiFace[nFaces];
|
||||||
for (unsigned int i = 0; i < count; i += 2) {
|
for (unsigned int i = 0; i < count; i += 2) {
|
||||||
SetFace(faces[i / 2], data.GetUInt(i), data.GetUInt(i + 1));
|
SetFace(faces[i / 2], data.GetUInt(i), data.GetUInt(i + 1));
|
||||||
|
@ -353,6 +357,10 @@ void glTFImporter::ImportMeshes(glTF::Asset& r)
|
||||||
|
|
||||||
case PrimitiveMode_TRIANGLES: {
|
case PrimitiveMode_TRIANGLES: {
|
||||||
nFaces = count / 3;
|
nFaces = count / 3;
|
||||||
|
if (nFaces * 3 != count) {
|
||||||
|
ASSIMP_LOG_WARN("The number of vertices was not compatible with the TRIANGLES mode. Some vertices were dropped.");
|
||||||
|
count = nFaces * 3;
|
||||||
|
}
|
||||||
faces = new aiFace[nFaces];
|
faces = new aiFace[nFaces];
|
||||||
for (unsigned int i = 0; i < count; i += 3) {
|
for (unsigned int i = 0; i < count; i += 3) {
|
||||||
SetFace(faces[i / 3], data.GetUInt(i), data.GetUInt(i + 1), data.GetUInt(i + 2));
|
SetFace(faces[i / 3], data.GetUInt(i), data.GetUInt(i + 1), data.GetUInt(i + 2));
|
||||||
|
@ -395,6 +403,10 @@ void glTFImporter::ImportMeshes(glTF::Asset& r)
|
||||||
|
|
||||||
case PrimitiveMode_LINES: {
|
case PrimitiveMode_LINES: {
|
||||||
nFaces = count / 2;
|
nFaces = count / 2;
|
||||||
|
if (nFaces * 2 != count) {
|
||||||
|
ASSIMP_LOG_WARN("The number of vertices was not compatible with the LINES mode. Some vertices were dropped.");
|
||||||
|
count = nFaces * 2;
|
||||||
|
}
|
||||||
faces = new aiFace[nFaces];
|
faces = new aiFace[nFaces];
|
||||||
for (unsigned int i = 0; i < count; i += 2) {
|
for (unsigned int i = 0; i < count; i += 2) {
|
||||||
SetFace(faces[i / 2], i, i + 1);
|
SetFace(faces[i / 2], i, i + 1);
|
||||||
|
@ -418,6 +430,10 @@ void glTFImporter::ImportMeshes(glTF::Asset& r)
|
||||||
|
|
||||||
case PrimitiveMode_TRIANGLES: {
|
case PrimitiveMode_TRIANGLES: {
|
||||||
nFaces = count / 3;
|
nFaces = count / 3;
|
||||||
|
if (nFaces * 3 != count) {
|
||||||
|
ASSIMP_LOG_WARN("The number of vertices was not compatible with the TRIANGLES mode. Some vertices were dropped.");
|
||||||
|
count = nFaces * 3;
|
||||||
|
}
|
||||||
faces = new aiFace[nFaces];
|
faces = new aiFace[nFaces];
|
||||||
for (unsigned int i = 0; i < count; i += 3) {
|
for (unsigned int i = 0; i < count; i += 3) {
|
||||||
SetFace(faces[i / 3], i, i + 1, i + 2);
|
SetFace(faces[i / 3], i, i + 1, i + 2);
|
||||||
|
|
|
@ -530,6 +530,10 @@ void glTF2Importer::ImportMeshes(glTF2::Asset& r)
|
||||||
|
|
||||||
case PrimitiveMode_LINES: {
|
case PrimitiveMode_LINES: {
|
||||||
nFaces = count / 2;
|
nFaces = count / 2;
|
||||||
|
if (nFaces * 2 != count) {
|
||||||
|
ASSIMP_LOG_WARN("The number of vertices was not compatible with the LINES mode. Some vertices were dropped.");
|
||||||
|
count = nFaces * 2;
|
||||||
|
}
|
||||||
faces = new aiFace[nFaces];
|
faces = new aiFace[nFaces];
|
||||||
for (unsigned int i = 0; i < count; i += 2) {
|
for (unsigned int i = 0; i < count; i += 2) {
|
||||||
SetFace(faces[i / 2], data.GetUInt(i), data.GetUInt(i + 1));
|
SetFace(faces[i / 2], data.GetUInt(i), data.GetUInt(i + 1));
|
||||||
|
@ -553,6 +557,10 @@ void glTF2Importer::ImportMeshes(glTF2::Asset& r)
|
||||||
|
|
||||||
case PrimitiveMode_TRIANGLES: {
|
case PrimitiveMode_TRIANGLES: {
|
||||||
nFaces = count / 3;
|
nFaces = count / 3;
|
||||||
|
if (nFaces * 3 != count) {
|
||||||
|
ASSIMP_LOG_WARN("The number of vertices was not compatible with the TRIANGLES mode. Some vertices were dropped.");
|
||||||
|
count = nFaces * 3;
|
||||||
|
}
|
||||||
faces = new aiFace[nFaces];
|
faces = new aiFace[nFaces];
|
||||||
for (unsigned int i = 0; i < count; i += 3) {
|
for (unsigned int i = 0; i < count; i += 3) {
|
||||||
SetFace(faces[i / 3], data.GetUInt(i), data.GetUInt(i + 1), data.GetUInt(i + 2));
|
SetFace(faces[i / 3], data.GetUInt(i), data.GetUInt(i + 1), data.GetUInt(i + 2));
|
||||||
|
@ -604,6 +612,10 @@ void glTF2Importer::ImportMeshes(glTF2::Asset& r)
|
||||||
|
|
||||||
case PrimitiveMode_LINES: {
|
case PrimitiveMode_LINES: {
|
||||||
nFaces = count / 2;
|
nFaces = count / 2;
|
||||||
|
if (nFaces * 2 != count) {
|
||||||
|
ASSIMP_LOG_WARN("The number of vertices was not compatible with the LINES mode. Some vertices were dropped.");
|
||||||
|
count = nFaces * 2;
|
||||||
|
}
|
||||||
faces = new aiFace[nFaces];
|
faces = new aiFace[nFaces];
|
||||||
for (unsigned int i = 0; i < count; i += 2) {
|
for (unsigned int i = 0; i < count; i += 2) {
|
||||||
SetFace(faces[i / 2], i, i + 1);
|
SetFace(faces[i / 2], i, i + 1);
|
||||||
|
@ -627,6 +639,10 @@ void glTF2Importer::ImportMeshes(glTF2::Asset& r)
|
||||||
|
|
||||||
case PrimitiveMode_TRIANGLES: {
|
case PrimitiveMode_TRIANGLES: {
|
||||||
nFaces = count / 3;
|
nFaces = count / 3;
|
||||||
|
if (nFaces * 3 != count) {
|
||||||
|
ASSIMP_LOG_WARN("The number of vertices was not compatible with the TRIANGLES mode. Some vertices were dropped.");
|
||||||
|
count = nFaces * 3;
|
||||||
|
}
|
||||||
faces = new aiFace[nFaces];
|
faces = new aiFace[nFaces];
|
||||||
for (unsigned int i = 0; i < count; i += 3) {
|
for (unsigned int i = 0; i < count; i += 3) {
|
||||||
SetFace(faces[i / 3], i, i + 1, i + 2);
|
SetFace(faces[i / 3], i, i + 1, i + 2);
|
||||||
|
|
Loading…
Reference in New Issue