瀏覽代碼

Merge pull request #2057 from assimp/issue_1340

closes https://github.com/assimp/assimp/issues/1340: Fix handling of …
Kim Kulling 7 年之前
父節點
當前提交
3c6ba8162b

+ 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() );

+ 7 - 0
test/models/OpenGEX/empty_camera.ogex

@@ -0,0 +1,7 @@
+CameraObject {
+    Param (attrib = "fov") { float { 0.97 } }
+    Param (attrib = "near") { float { 1.5 } }
+    Param (attrib = "far") { float { 150.0 } }
+}
+
+CameraObject {}

+ 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);
+}