)\r
{\r
UINTN StringSize;\r
- CHAR16 Zero;\r
UINT8 *StringPtr;\r
\r
ASSERT (StringSrc != NULL && BufferSize != NULL);\r
\r
- ZeroMem (&Zero, sizeof (CHAR16));\r
StringSize = sizeof (CHAR16);\r
StringPtr = StringSrc;\r
- while (CompareMem (StringPtr, &Zero, sizeof (CHAR16)) != 0) {\r
+ while (ReadUnaligned16 ((UINT16 *) StringPtr) != 0) {\r
StringSize += sizeof (CHAR16);\r
StringPtr += sizeof (CHAR16);\r
}\r
// \r
StringPackage->FontId++;\r
\r
- SafeFreePool (FontInfo);\r
+ FreePool (FontInfo);\r
}\r
\r
BlockSize += Ext2.Length;\r
TmpSize\r
);\r
\r
- SafeFreePool (StringPackage->StringBlock);\r
+ FreePool (StringPackage->StringBlock);\r
StringPackage->StringBlock = Block;\r
StringPackage->StringPkgHdr->Header.Length += (UINT32) (BlockSize - OldBlockSize);\r
break;\r
OldBlockSize - (StringTextPtr - StringPackage->StringBlock) - StringSize\r
);\r
\r
- SafeFreePool (StringPackage->StringBlock);\r
+ FreePool (StringPackage->StringBlock);\r
StringPackage->StringBlock = Block;\r
StringPackage->StringPkgHdr->Header.Length += (UINT32) (BlockSize - OldBlockSize);\r
break;\r
\r
CopyMem (BlockPtr, StringPackage->StringBlock, OldBlockSize);\r
\r
- SafeFreePool (StringPackage->StringBlock);\r
+ FreePool (StringPackage->StringBlock);\r
StringPackage->StringBlock = Block;\r
StringPackage->StringPkgHdr->Header.Length += Ext2.Length;\r
\r
HeaderSize = (UINT32) (AsciiStrSize ((CHAR8 *) Language) - 1 + sizeof (EFI_HII_STRING_PACKAGE_HDR));\r
StringPackage->StringPkgHdr = AllocateZeroPool (HeaderSize);\r
if (StringPackage->StringPkgHdr == NULL) {\r
- SafeFreePool (StringPackage);\r
+ FreePool (StringPackage);\r
return EFI_OUT_OF_RESOURCES;\r
}\r
StringPackage->StringPkgHdr->Header.Type = EFI_HII_PACKAGE_STRINGS;\r
BlockSize = Ucs2BlockSize + sizeof (EFI_HII_SIBT_END_BLOCK);\r
StringPackage->StringBlock = (UINT8 *) AllocateZeroPool (BlockSize);\r
if (StringPackage->StringBlock == NULL) {\r
- SafeFreePool (StringPackage->StringPkgHdr);\r
- SafeFreePool (StringPackage);\r
+ FreePool (StringPackage->StringPkgHdr);\r
+ FreePool (StringPackage);\r
return EFI_OUT_OF_RESOURCES;\r
}\r
\r
// Append a EFI_HII_SIBT_END block to the end.\r
//\r
*BlockPtr = EFI_HII_SIBT_END;\r
- SafeFreePool (StringPackage->StringBlock);\r
+ FreePool (StringPackage->StringBlock);\r
StringPackage->StringBlock = StringBlock;\r
StringPackage->StringPkgHdr->Header.Length += Ucs2BlockSize;\r
PackageListNode->PackageListHdr.PackageLength += Ucs2BlockSize;\r
// Append a EFI_HII_SIBT_END block to the end.\r
//\r
*BlockPtr = EFI_HII_SIBT_END;\r
- SafeFreePool (StringPackage->StringBlock);\r
+ FreePool (StringPackage->StringBlock);\r
StringPackage->StringBlock = StringBlock;\r
StringPackage->StringPkgHdr->Header.Length += Ucs2FontBlockSize;\r
PackageListNode->PackageListHdr.PackageLength += Ucs2FontBlockSize;\r
// Append a EFI_HII_SIBT_END block to the end.\r
//\r
*BlockPtr = EFI_HII_SIBT_END;\r
- SafeFreePool (StringPackage->StringBlock);\r
+ FreePool (StringPackage->StringBlock);\r
StringPackage->StringBlock = StringBlock;\r
StringPackage->StringPkgHdr->Header.Length += FontBlockSize + Ucs2FontBlockSize;\r
PackageListNode->PackageListHdr.PackageLength += FontBlockSize + Ucs2FontBlockSize;\r
}\r
}\r
\r
+ //\r
+ // Trigger any registered notification function\r
+ //\r
+ if (!Matched) { \r
+ return InvokeRegisteredFunction (\r
+ Private,\r
+ EFI_HII_DATABASE_NOTIFY_NEW_PACK,\r
+ (VOID *) StringPackage,\r
+ EFI_HII_PACKAGE_STRINGS,\r
+ PackageList\r
+ );\r
+ }\r
+\r
return EFI_SUCCESS;\r
}\r
\r