diff --git a/code/DXFLoader.cpp b/code/DXFLoader.cpp index e4529097d..c8aee18dd 100644 --- a/code/DXFLoader.cpp +++ b/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; } // ------------------------------------------------------------------------------------------------ diff --git a/test/unit/utDXFImporterExporter.cpp b/test/unit/utDXFImporterExporter.cpp index 1cb23cccf..ee6f34ecd 100644 --- a/test/unit/utDXFImporterExporter.cpp +++ b/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 ); +} +