IN CHAR16 *BaseVariableName\r
)\r
{\r
+ UINTN Size;\r
CHAR16 *VariableName;\r
\r
- VariableName = CatSPrint (NULL, BaseVariableName);\r
+ //\r
+ // Allocate Unicode string with room for BaseVariableName and a 16 digit\r
+ // hexadecimal value for the HardwareInstance value.\r
+ //\r
+ Size = StrSize (BaseVariableName) + 16 * sizeof (CHAR16);\r
+ VariableName = AllocateCopyPool (Size, BaseVariableName);\r
if (VariableName == NULL) {\r
DEBUG ((DEBUG_ERROR, "FmpDxe(%s): Failed to generate variable name %s.\n", mImageIdName, BaseVariableName));\r
return VariableName;\r
if (HardwareInstance == 0) {\r
return VariableName;\r
}\r
- VariableName = CatSPrint (VariableName, L"%016lx", HardwareInstance);\r
- if (VariableName == NULL) {\r
- DEBUG ((DEBUG_ERROR, "FmpDxe(%s): Failed to generate variable name %s.\n", mImageIdName, BaseVariableName));\r
- }\r
+ UnicodeValueToStringS (\r
+ &VariableName[StrLen(BaseVariableName)],\r
+ Size,\r
+ PREFIX_ZERO | RADIX_HEX,\r
+ HardwareInstance,\r
+ 16\r
+ );\r
return VariableName;\r
}\r
\r