Selaa lähdekoodia

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 vuotta sitten
vanhempi
commit
9a7ee0ac14
1 muutettua tiedostoa jossa 3 lisäystä ja 0 poistoa
  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 "ProcessHelper.h"
 #include "Material/MaterialSystem.h"
+#include <assimp/Exceptional.h>
 #include <stdio.h>
 
 using namespace Assimp;
@@ -171,6 +172,8 @@ void RemoveRedundantMatsProcess::Execute( aiScene* pScene)
         }
         // If the new material count differs from the original,
         // we need to rebuild the material list and remap mesh material indexes.
+        if(iNewNum < 1)
+          throw DeadlyImportError("No materials remaining");
         if (iNewNum != pScene->mNumMaterials) {
             ai_assert(iNewNum > 0);
             aiMaterial** ppcMaterials = new aiMaterial*[iNewNum];