For orderedlist question, the value is stored in a buffer, not in HiiValue. So when need to get default value from callback function for orderedlist, need to pass the buffer. This patch is to enhance this logic.
Cc: Liming Gao <liming....@intel.com> Cc: Eric Dong <eric.d...@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Dandan Bi <dandan...@intel.com> --- MdeModulePkg/Universal/SetupBrowserDxe/Setup.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/MdeModulePkg/Universal/SetupBrowserDxe/Setup.c b/MdeModulePkg/Universal/SetupBrowserDxe/Setup.c index b357e29..c36588e 100644 --- a/MdeModulePkg/Universal/SetupBrowserDxe/Setup.c +++ b/MdeModulePkg/Universal/SetupBrowserDxe/Setup.c @@ -3895,10 +3895,11 @@ GetQuestionDefault ( EFI_STRING StrValue; EFI_HII_CONFIG_ACCESS_PROTOCOL *ConfigAccess; EFI_BROWSER_ACTION_REQUEST ActionRequest; INTN Action; CHAR16 *NewString; + EFI_IFR_TYPE_VALUE *TypeValue; Status = EFI_NOT_FOUND; StrValue = NULL; // @@ -3915,10 +3916,17 @@ GetQuestionDefault ( // 3, use nested EFI_IFR_DEFAULT // 4, set flags of EFI_ONE_OF_OPTION (provide Standard and Manufacturing default) // 5, set flags of EFI_IFR_CHECKBOX (provide Standard and Manufacturing default) (lowest priority) // HiiValue = &Question->HiiValue; + TypeValue = &HiiValue->Value; + if (HiiValue->Type == EFI_IFR_TYPE_BUFFER && Question->BufferValue != NULL) { + // + // For orderedlist, need to pass the BufferValue to Callback function. + // + TypeValue = (EFI_IFR_TYPE_VALUE *) Question->BufferValue; + } // // Get Question defaut value from call back function. // ConfigAccess = FormSet->ConfigAccess; @@ -3928,11 +3936,11 @@ GetQuestionDefault ( Status = ConfigAccess->Callback ( ConfigAccess, Action, Question->QuestionId, HiiValue->Type, - &HiiValue->Value, + TypeValue, &ActionRequest ); if (!EFI_ERROR (Status)) { if (HiiValue->Type == EFI_IFR_TYPE_STRING) { NewString = GetToken (Question->HiiValue.Value.string, FormSet->HiiHandle); -- 1.9.5.msysgit.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel