Forráskód Böngészése

Throw a DeadlyImportError rather than an assertion if all materials are redundant and thus removed

Closes: https://github.com/assimp/assimp/issues/4224
Closes: https://github.com/assimp/assimp/issues/4225
IOhannes m zmölnig 3 éve
szülő
commit
9a7ee0ac14
1 módosított fájl, 3 hozzáadás és 0 törlés
  1. 3 0
      code/PostProcessing/RemoveRedundantMaterials.cpp

+ 3 - 0
code/PostProcessing/RemoveRedundantMaterials.cpp

@@ -50,6 +50,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #include <assimp/ParsingUtils.h>
 #include <assimp/ParsingUtils.h>
 #include "ProcessHelper.h"
 #include "ProcessHelper.h"
 #include "Material/MaterialSystem.h"
 #include "Material/MaterialSystem.h"
+#include <assimp/Exceptional.h>
 #include <stdio.h>
 #include <stdio.h>
 
 
 using namespace Assimp;
 using namespace Assimp;
@@ -171,6 +172,8 @@ void RemoveRedundantMatsProcess::Execute( aiScene* pScene)
         }
         }
         // If the new material count differs from the original,
         // If the new material count differs from the original,
         // we need to rebuild the material list and remap mesh material indexes.
         // we need to rebuild the material list and remap mesh material indexes.
+        if(iNewNum < 1)
+          throw DeadlyImportError("No materials remaining");
         if (iNewNum != pScene->mNumMaterials) {
         if (iNewNum != pScene->mNumMaterials) {
             ai_assert(iNewNum > 0);
             ai_assert(iNewNum > 0);
             aiMaterial** ppcMaterials = new aiMaterial*[iNewNum];
             aiMaterial** ppcMaterials = new aiMaterial*[iNewNum];