Fix DXBC magic parsing
authorChris Bieneman <chris.bieneman@me.com>
Tue, 3 May 2022 17:00:02 +0000 (12:00 -0500)
committerChris Bieneman <chris.bieneman@me.com>
Tue, 3 May 2022 21:41:48 +0000 (14:41 -0700)
This gets identify_magic working correctly for DXContainer files

llvm/lib/BinaryFormat/Magic.cpp
llvm/unittests/Object/DXContainerTest.cpp

index d48adb1..99d3f69 100644 (file)
@@ -227,7 +227,7 @@ file_magic llvm::identify_magic(StringRef Magic) {
     break;
   
   case 'D': // DirectX container file - DXBC
-    if (startswith(Magic, "DXBC") && Magic.size() == 4)
+    if (startswith(Magic, "DXBC"))
       return file_magic::dxcontainer_object;
     break;
 
index 95bafe8..1c8ef4f 100644 (file)
@@ -22,8 +22,14 @@ template <std::size_t X> MemoryBufferRef getMemoryBuffer(uint8_t Data[X]) {
 }
 
 TEST(DXCFile, IdentifyMagic) {
-  StringRef Buffer("DXBC");
-  EXPECT_EQ(identify_magic(Buffer), file_magic::dxcontainer_object);
+  {
+    StringRef Buffer("DXBC");
+    EXPECT_EQ(identify_magic(Buffer), file_magic::dxcontainer_object);
+  }
+  {
+    StringRef Buffer("DXBCBlahBlahBlah");
+    EXPECT_EQ(identify_magic(Buffer), file_magic::dxcontainer_object);
+  }
 }
 
 TEST(DXCFile, ParseHeaderErrors) {