瀏覽代碼

closes https://github.com/assimp/assimp/issues/1340: Fix handling of empty nodes in openddl-parser.

kimkulling 7 年之前
父節點
當前提交
e13f6876bb
共有 2 個文件被更改,包括 12 次插入0 次删除
  1. 6 0
      contrib/openddlparser/code/OpenDDLParser.cpp
  2. 6 0
      test/unit/utOpenGEXImportExport.cpp

+ 6 - 0
contrib/openddlparser/code/OpenDDLParser.cpp

@@ -100,9 +100,15 @@ static bool isUnsignedIntegerType( Value::ValueType integerType ) {
 }
 
 static DDLNode *createDDLNode( Text *id, OpenDDLParser *parser ) {
+    // Basic checks
     if( ddl_nullptr == id || ddl_nullptr == parser ) {
         return ddl_nullptr;
     }
+    
+    // If the buffer is empty ( an empty node ) return nullptr
+    if ( ddl_nullptr == id->m_buffer ) {
+        return ddl_nullptr;
+    }
 
     const std::string type( id->m_buffer );
     DDLNode *parent( parser->top() );

+ 6 - 0
test/unit/utOpenGEXImportExport.cpp

@@ -68,3 +68,9 @@ TEST_F( utOpenGEXImportExport, Importissue1262_NoCrash ) {
     EXPECT_NE( nullptr, scene );
 
 }
+
+TEST_F(utOpenGEXImportExport, Importissue1340_EmptyCameraObject) {
+    Assimp::Importer importer;
+    const aiScene *scene = importer.ReadFile(ASSIMP_TEST_MODELS_DIR "/OpenGEX/empty_camera.ogex", 0);
+    EXPECT_NE(nullptr, scene);
+}