Hi Nickle,
May I ask you a question. What is the point to allocate and copy buffer. Then 
delete the original buffer.
Could we just assign StatementValue->Buffer to TempBuffer and then assign NULL 
to StatementValue->Buffer?

TempBuffer = StatementValue->Buffer;
StatementValue->Buffer = NULL;

Result would be the same, but we do not need to allocate and free memory.
Or I do not understand something?
Thank you,
Igor

-----Original Message-----
From: Nickle Wang <nick...@nvidia.com>
Sent: Saturday, July 22, 2023 4:18 AM
To: devel@edk2.groups.io
Cc: Abner Chang <abner.ch...@amd.com>; Igor Kulchytskyy <ig...@ami.com>; Nick 
Ramirez <nrami...@nvidia.com>
Subject: [EXTERNAL] [PATCH] RedfishPkg/RedfishPlatformConfigDxe: fix can not 
set one-of option issue.


**CAUTION: The e-mail below is from an external source. Please exercise caution 
before opening attachments, clicking links, or following guidance.**

StatementValue->Buffer is converted from ASCII to Unicode by caller
already so we don't have to convert it again.

Signed-off-by: Nickle Wang <nick...@nvidia.com>
Cc: Abner Chang <abner.ch...@amd.com>
Cc: Igor Kulchytskyy <ig...@ami.com>
Cc: Nick Ramirez <nrami...@nvidia.com>
---
 .../RedfishPlatformConfigDxe/RedfishPlatformConfigDxe.c     | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigDxe.c 
b/RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigDxe.c
index f2a8e77d9b00..648f3d2de7aa 100644
--- a/RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigDxe.c
+++ b/RedfishPkg/RedfishPlatformConfigDxe/RedfishPlatformConfigDxe.c
@@ -1660,7 +1660,11 @@ RedfishPlatformConfigSetStatementCommon (
     // in string format from HII point of view. Do a patch here.
     //
     if ((TargetStatement->HiiStatement->Operand == EFI_IFR_ONE_OF_OP) && 
(StatementValue->Type == EFI_IFR_TYPE_STRING)) {
-      TempBuffer = StrToUnicodeStr ((CHAR8 *)StatementValue->Buffer);
+      //
+      // Make a copy of input buffer to TempBuffer because StatementValue will 
be
+      // assigned in HiiStringToOneOfOptionValue().
+      //
+      TempBuffer = AllocateCopyPool (StrSize 
((EFI_STRING)StatementValue->Buffer), StatementValue->Buffer);
       if (TempBuffer == NULL) {
         return EFI_OUT_OF_RESOURCES;
       }
--
2.17.1

-The information contained in this message may be confidential and proprietary 
to American Megatrends (AMI). This communication is intended to be read only by 
the individual or entity to whom it is addressed or by their designee. If the 
reader of this message is not the intended recipient, you are on notice that 
any distribution of this message, in any form, is strictly prohibited. Please 
promptly notify the sender by reply e-mail or by telephone at 770-246-8600, and 
then delete or destroy all copies of the transmission.


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#107150): https://edk2.groups.io/g/devel/message/107150
Mute This Topic: https://groups.io/mt/100292370/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to