Three tiny squirmy subtle bugs combined themselves with the bug that was just fixed...
authorAlex Ionescu <aionescu@gmail.com>
Fri, 8 Jan 2016 01:18:08 +0000 (01:18 +0000)
committerAlex Ionescu <aionescu@gmail.com>
Fri, 8 Jan 2016 01:18:08 +0000 (01:18 +0000)
[BOOTLIB]: When failing to find a block device, keep going searching for more, instead of giving up (critical, because the CDROM FAT12 image is now device path #1, not #0).
[BOOTMGR]: Correctly use the right logical operator in EfiInitpGetDeviceNode to get the deepest-level media device node. We now get the CDROM node, not the raw node.
[CDMAKE]: Don't actually create an EFI/BOOT directory on the CDROM itself, but rather in the FAT12 image. Otherwise, this can confuse UEFI implementations to boot the boot manager off the raw CDROM, instead of the FAT12 image on the CDROM.

svn path=/trunk/; revision=70542

reactos/boot/environ/CMakeLists.txt
reactos/boot/environ/app/bootmgr/bootmgr.c
reactos/boot/environ/app/bootmgr/efiemu.c
reactos/boot/environ/lib/io/device.c

index 7a71957..f9abc29 100644 (file)
@@ -105,5 +105,3 @@ endif()
 
 add_dependencies(bootmgfw asm bugcodes)
 
-add_cd_file(TARGET bootmgfw FILE ${_bootmgfw_output_file} DESTINATION efi/boot NO_CAB FOR bootcd regtest NAME_ON_CD boot${EFI_PLATFORM_ID}.efi)
-
index 278e9c4..87625df 100644 (file)
@@ -1263,7 +1263,7 @@ BmMain (
         if (!NT_SUCCESS(Status))
         {
             /* Signature invalid, fail boot */
-           // goto Failure;
+            goto Failure;
         }
     }
 
index 268d1f2..55fda49 100644 (file)
@@ -319,7 +319,7 @@ EfiInitpGetDeviceNode (
 
     /* Loop each device path, until we get to the end or to a file path device node */
     for ((NextPath = NextDevicePathNode(DevicePath));
-         !(IsDevicePathEndType(NextPath)) && ((NextPath->Type != MEDIA_DEVICE_PATH) &&
+         !(IsDevicePathEndType(NextPath)) && ((NextPath->Type != MEDIA_DEVICE_PATH) ||
                                               (NextPath->SubType != MEDIA_FILEPATH_DP));
          (NextPath = NextDevicePathNode(NextPath)))
     {
index 20a48a9..ac8902a 100644 (file)
@@ -1276,7 +1276,7 @@ BlockIoFirmwareOpen (
         if (!NT_SUCCESS(Status))
         {
             EfiPrintf(L"EFI create failed: %lx\n", Status);
-            break;
+            continue;
         }
 
         /* Add the device entry to the device table */