Sync patch r14733 from main trunk.

Fix the BdsExpandPartitionPartialDevicePathToFull() hang issue by duplicates BlockIoDevicePath when the CachedDevicePath returned from BdsLibDelPartMatchInstance() is NULL.

git-svn-id: https://svn.code.sf.net/p/edk2/code/branches/UDK2010.SR1@14734 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
vanjeff 2013-09-27 02:50:36 +00:00 committed by vanjeff
parent ff19a31583
commit 4165e2fa23

View file

@ -1042,17 +1042,16 @@ BdsExpandPartitionPartialDevicePathToFull (
TempNewDevicePath = CachedDevicePath;
CachedDevicePath = BdsLibDelPartMatchInstance (CachedDevicePath, BlockIoDevicePath);
FreePool(TempNewDevicePath);
}
TempNewDevicePath = CachedDevicePath;
CachedDevicePath = AppendDevicePathInstance (BlockIoDevicePath, CachedDevicePath);
if (TempNewDevicePath != NULL) {
FreePool(TempNewDevicePath);
}
} else {
if (CachedDevicePath != NULL) {
TempNewDevicePath = CachedDevicePath;
CachedDevicePath = AppendDevicePathInstance (BlockIoDevicePath, CachedDevicePath);
FreePool(TempNewDevicePath);
} else {
CachedDevicePath = DuplicateDevicePath (BlockIoDevicePath);
}
//
// Here limit the device path instance number to 12, which is max number for a system support 3 IDE controller
// If the user try to boot many OS in different HDs or partitions, in theory,