Original BdsLibMatchDevicePaths() excludes end node when comparing 2 devices paths...
authorxli24 <xli24@de2fecce-e211-0410-80a6-f3fac2684e05>
Thu, 14 Dec 2006 05:23:10 +0000 (05:23 +0000)
committerxli24 <xli24@de2fecce-e211-0410-80a6-f3fac2684e05>
Thu, 14 Dec 2006 05:23:10 +0000 (05:23 +0000)
So it should compare the entire device path, including the end node.

git-svn-id: https://edk2.tianocore.org/svn/edk2/trunk@2099 de2fecce-e211-0410-80a6-f3fac2684e05

edk2/EdkNt32Pkg/Library/EdkGenericBdsLib/BdsMisc.c

index def3102..b88d051 100644 (file)
@@ -688,7 +688,6 @@ Returns:
 \r
   DevicePath      = Multi;\r
   DevicePathInst  = GetNextDevicePathInstance (&DevicePath, &Size);\r
-  Size -= sizeof (EFI_DEVICE_PATH_PROTOCOL);\r
 \r
   //\r
   // Search for the match of 'Single' in 'Multi'\r
@@ -698,17 +697,13 @@ Returns:
     // If the single device path is found in multiple device paths,\r
     // return success\r
     //\r
-    if (Size == 0) {\r
-      return FALSE;\r
-    }\r
-\r
     if (CompareMem (Single, DevicePathInst, Size) == 0) {\r
+      gBS->FreePool (DevicePathInst);\r
       return TRUE;\r
     }\r
 \r
     gBS->FreePool (DevicePathInst);\r
     DevicePathInst = GetNextDevicePathInstance (&DevicePath, &Size);\r
-    Size -= sizeof (EFI_DEVICE_PATH_PROTOCOL);\r
   }\r
 \r
   return FALSE;\r