Browse Source

Use correct check to do a tokensearch.

Kim Kulling 7 years ago
parent
commit
5319974fe1
2 changed files with 16 additions and 5 deletions
  1. 9 5
      code/DXFLoader.cpp
  2. 7 0
      test/unit/utDXFImporterExporter.cpp

+ 9 - 5
code/DXFLoader.cpp

@@ -119,14 +119,18 @@ DXFImporter::~DXFImporter()
 
 // ------------------------------------------------------------------------------------------------
 // Returns whether the class can handle the format of the given file.
-bool DXFImporter::CanRead( const std::string& pFile, IOSystem* pIOHandler, bool checkSig ) const
-{
-    if ( checkSig ) {
-        return SimpleExtensionCheck(pFile,"dxf");
-    } else {
+bool DXFImporter::CanRead( const std::string& pFile, IOSystem* pIOHandler, bool checkSig ) const {
+    const std::string& extension = GetExtension( pFile );
+    if ( extension == "dxf" ) {
+        return true;
+    }
+
+    if ( extension.empty() || checkSig ) {
         static const char *pTokens[] = { "SECTION", "HEADER", "ENDSEC", "BLOCKS" };
         return BaseImporter::SearchFileHeaderForToken(pIOHandler, pFile, pTokens, 4 );
     }
+
+    return false;
 }
 
 // ------------------------------------------------------------------------------------------------

+ 7 - 0
test/unit/utDXFImporterExporter.cpp

@@ -62,3 +62,10 @@ public:
 TEST_F( utDXFImporterExporter, importDXFFromFileTest ) {
     EXPECT_TRUE( importerTest() );
 }
+
+TEST_F( utDXFImporterExporter, importerWithoutExtensionTest ) {
+    Assimp::Importer importer;
+    const aiScene *scene = importer.ReadFile( ASSIMP_TEST_MODELS_DIR "/DXF/lineTest", aiProcess_ValidateDataStructure );
+    EXPECT_NE( nullptr, scene );
+}
+