mirror of https://github.com/acidanthera/audk.git
Correct DriverSample to produce the ConfigAccess protocol
And fix the bug in HiiDataBase to incorrectly free pool. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8321 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
d6e11f2230
commit
04da0b4a11
|
@ -362,13 +362,16 @@ ExtractConfig (
|
|||
// Try to get the current setting from variable.
|
||||
//
|
||||
BufferSize = sizeof (DRIVER_SAMPLE_CONFIGURATION);
|
||||
gRT->GetVariable (
|
||||
VariableName,
|
||||
&mFormSetGuid,
|
||||
NULL,
|
||||
&BufferSize,
|
||||
&PrivateData->Configuration
|
||||
);
|
||||
Status = gRT->GetVariable (
|
||||
VariableName,
|
||||
&mFormSetGuid,
|
||||
NULL,
|
||||
&BufferSize,
|
||||
&PrivateData->Configuration
|
||||
);
|
||||
if (EFI_ERROR (Status)) {
|
||||
return Status;
|
||||
}
|
||||
|
||||
if (Request == NULL) {
|
||||
//
|
||||
|
@ -476,13 +479,16 @@ RouteConfig (
|
|||
// Get Buffer Storage data from EFI variable
|
||||
//
|
||||
BufferSize = sizeof (DRIVER_SAMPLE_CONFIGURATION);
|
||||
gRT->GetVariable (
|
||||
VariableName,
|
||||
&mFormSetGuid,
|
||||
NULL,
|
||||
&BufferSize,
|
||||
&PrivateData->Configuration
|
||||
);
|
||||
Status = gRT->GetVariable (
|
||||
VariableName,
|
||||
&mFormSetGuid,
|
||||
NULL,
|
||||
&BufferSize,
|
||||
&PrivateData->Configuration
|
||||
);
|
||||
if (EFI_ERROR (Status)) {
|
||||
return Status;
|
||||
}
|
||||
|
||||
//
|
||||
// Convert <ConfigResp> to buffer data by helper function ConfigToBlock()
|
||||
|
@ -968,6 +974,17 @@ DriverSampleInit (
|
|||
BufferSize = sizeof (DRIVER_SAMPLE_CONFIGURATION);
|
||||
Status = gRT->GetVariable (VariableName, &mFormSetGuid, NULL, &BufferSize, Configuration);
|
||||
if (EFI_ERROR (Status)) {
|
||||
//
|
||||
// Store zero data Buffer Storage to EFI variable
|
||||
//
|
||||
Status = gRT->SetVariable(
|
||||
VariableName,
|
||||
&mFormSetGuid,
|
||||
EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS,
|
||||
sizeof (DRIVER_SAMPLE_CONFIGURATION),
|
||||
Configuration
|
||||
);
|
||||
ASSERT (Status == EFI_SUCCESS);
|
||||
//
|
||||
// EFI variable for NV config doesn't exit, we should build this variable
|
||||
// based on default values stored in IFR
|
||||
|
|
|
@ -873,9 +873,9 @@ ParseIfrData (
|
|||
LengthString = StrLen (GuidStr);
|
||||
LengthString = LengthString + StrLen (NameStr) + 1;
|
||||
TempStr = AllocateZeroPool (LengthString * sizeof (CHAR16));
|
||||
FreePool (GuidStr);
|
||||
FreePool (NameStr);
|
||||
if (TempStr == NULL) {
|
||||
FreePool (GuidStr);
|
||||
FreePool (NameStr);
|
||||
FreePool (VarStoreName);
|
||||
Status = EFI_OUT_OF_RESOURCES;
|
||||
goto Done;
|
||||
|
@ -899,6 +899,8 @@ ParseIfrData (
|
|||
//
|
||||
// Free alllocated temp string.
|
||||
//
|
||||
FreePool (GuidStr);
|
||||
FreePool (NameStr);
|
||||
FreePool (TempStr);
|
||||
break;
|
||||
|
||||
|
|
Loading…
Reference in New Issue