summaryrefslogtreecommitdiff
path: root/MdeModulePkg/Universal/HiiDatabaseDxe/Database.c
diff options
context:
space:
mode:
authorqwang12 <qwang12@6f19259b-4bc3-4df7-8a09-765794883524>2008-06-23 09:41:33 +0000
committerqwang12 <qwang12@6f19259b-4bc3-4df7-8a09-765794883524>2008-06-23 09:41:33 +0000
commit813acf3a9a99e97ab200c7e222ee96810a9aa3fd (patch)
tree199eca9222be7d720c476bf30c7c17342a4c8b17 /MdeModulePkg/Universal/HiiDatabaseDxe/Database.c
parent54cf87805f9ad61a316ce9e4eb9c67154c87cf0b (diff)
downloadedk2-platforms-813acf3a9a99e97ab200c7e222ee96810a9aa3fd.tar.xz
Merged in the following trackers from EDK:
EDK1145 Cursor mising in shell in some case EDK1099: Dell - [HII] HiiGetFontInfo() not retrieve the system font by FoFontInfoMask EDK1127: [UEFI 2.10] Keyboard layout support EDK1129: [UEFI HII] GUID is represented wrongly in Config String And some other fixes such as *[UEFI HII] HiiGetAltCfg is generating "Name=" sub string in the wrong format *UEFI HII: GetUnicodeStringTextOrSize() doesn't handle NULL StringDest properly *GetFontInfo() need be updated to avoid iteration *HIIStringProtocolTest failed on multiple platform *[Uefi 2.1] Comply with latest Hii ECR * GetFontInfo() need be updated to avoid iteration git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5361 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'MdeModulePkg/Universal/HiiDatabaseDxe/Database.c')
-rw-r--r--MdeModulePkg/Universal/HiiDatabaseDxe/Database.c33
1 files changed, 22 insertions, 11 deletions
diff --git a/MdeModulePkg/Universal/HiiDatabaseDxe/Database.c b/MdeModulePkg/Universal/HiiDatabaseDxe/Database.c
index 3ee8b4ca34..b5a5c43b43 100644
--- a/MdeModulePkg/Universal/HiiDatabaseDxe/Database.c
+++ b/MdeModulePkg/Universal/HiiDatabaseDxe/Database.c
@@ -1,6 +1,6 @@
/** @file
-Copyright (c) 2007, Intel Corporation
+Copyright (c) 2007 - 2008, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
@@ -2771,8 +2771,7 @@ HiiNewPackageList (
@retval EFI_SUCCESS The data associated with the Handle was removed
from the HII database.
- @retval EFI_NOT_FOUND The specified PackageList could not be found in
- database.
+ @retval EFI_NOT_FOUND The specified andle is not in database.
@retval EFI_INVALID_PARAMETER The Handle was not valid.
**/
@@ -2790,10 +2789,14 @@ HiiRemovePackageList (
HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList;
HII_HANDLE *HiiHandle;
- if (This == NULL || !IsHiiHandleValid (Handle)) {
+ if (This == NULL) {
return EFI_INVALID_PARAMETER;
}
+ if (!IsHiiHandleValid (Handle)) {
+ return EFI_NOT_FOUND;
+ }
+
Private = HII_DATABASE_DATABASE_PRIVATE_DATA_FROM_THIS (This);
//
@@ -2879,9 +2882,8 @@ HiiRemovePackageList (
@retval EFI_SUCCESS The HII database was successfully updated.
@retval EFI_OUT_OF_RESOURCES Unable to allocate enough memory for the updated
database.
- @retval EFI_INVALID_PARAMETER Handle or PackageList was NULL.
- @retval EFI_NOT_FOUND The Handle was not valid or could not be found in
- database.
+ @retval EFI_INVALID_PARAMETER PackageList was NULL.
+ @retval EFI_NOT_FOUND The specified Handle is not in database.
**/
EFI_STATUS
@@ -2900,7 +2902,7 @@ HiiUpdatePackageList (
HII_DATABASE_PACKAGE_LIST_INSTANCE *OldPackageList;
EFI_HII_PACKAGE_HEADER PackageHeader;
- if (This == NULL || PackageList == NULL || Handle == NULL) {
+ if (This == NULL || PackageList == NULL) {
return EFI_INVALID_PARAMETER;
}
@@ -2993,12 +2995,17 @@ HiiUpdatePackageList (
@param Handle An array of EFI_HII_HANDLE instances returned.
@retval EFI_SUCCESS The matching handles are outputed successfully.
+ HandleBufferLength is updated with the actual length.
@retval EFI_BUFFER_TO_SMALL The HandleBufferLength parameter indicates that
Handle is too small to support the number of
handles. HandleBufferLength is updated with a
value that will enable the data to fit.
@retval EFI_NOT_FOUND No matching handle could not be found in database.
@retval EFI_INVALID_PARAMETER Handle or HandleBufferLength was NULL.
+
+ @retval EFI_INVALID_PARAMETER PackageType is not a EFI_HII_PACKAGE_TYPE_GUID but
+ PackageGuid is not NULL, PackageType is a EFI_HII_
+ PACKAGE_TYPE_GUID but PackageGuid is NULL.
**/
EFI_STATUS
@@ -3350,10 +3357,14 @@ HiiUnregisterPackageNotify (
LIST_ENTRY *Link;
EFI_STATUS Status;
- if (This == NULL || NotificationHandle == NULL) {
+ if (This == NULL) {
return EFI_INVALID_PARAMETER;
}
+ if (NotificationHandle == NULL) {
+ return EFI_NOT_FOUND;
+ }
+
Status = gBS->OpenProtocol (
NotificationHandle,
&mHiiDatabaseNotifyGuid,
@@ -3363,7 +3374,7 @@ HiiUnregisterPackageNotify (
EFI_OPEN_PROTOCOL_TEST_PROTOCOL
);
if (EFI_ERROR (Status)) {
- return EFI_INVALID_PARAMETER;
+ return EFI_NOT_FOUND;
}
Private = HII_DATABASE_DATABASE_PRIVATE_DATA_FROM_THIS (This);
@@ -3474,7 +3485,7 @@ HiiFindKeyboardLayouts (
for (Index = 0; Index < LayoutCount; Index++) {
ResultSize += sizeof (EFI_GUID);
if (ResultSize <= *KeyGuidBufferLength) {
- CopyMem (KeyGuidBuffer + Index, Layout + sizeof (UINT16), sizeof (EFI_GUID));
+ CopyMem (KeyGuidBuffer + (ResultSize / sizeof (EFI_GUID) - 1), Layout + sizeof (UINT16), sizeof (EFI_GUID));
CopyMem (&LayoutLength, Layout, sizeof (UINT16));
Layout = Layout + LayoutLength;
}