[edk2] MdeModulePkg: AcpiTableDxe: fix VS2008 build by merging adjacent if blocks

Message ID 1456417527-13682-1-git-send-email-ard.biesheuvel@linaro.org
State Accepted
Commit 3a61de23b3b3390235bf8f95cde117a8f7dd5f62
Headers show

Commit Message

Ard Biesheuvel Feb. 25, 2016, 4:25 p.m.
The assignment of CurrentRsdtEntry and its subsequent dereference are
subject to the same condition, but for some reason, VS2008 does not see
that and warns about the dereference possibly involving an uninitialized
pointer. Since the single statememt between the blocks is unrelated, we
can just move it and merge the two conditional blocks together.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>

---
 MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableProtocol.c | 22 +++++++++-----------
 1 file changed, 10 insertions(+), 12 deletions(-)

-- 
2.5.0

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Comments

Ard Biesheuvel Feb. 26, 2016, 1:11 p.m. | #1
On 26 February 2016 at 03:41, Zeng, Star <star.zeng@intel.com> wrote:
> On 2016/2/26 0:25, Ard Biesheuvel wrote:

>>

>> The assignment of CurrentRsdtEntry and its subsequent dereference are

>> subject to the same condition, but for some reason, VS2008 does not see

>> that and warns about the dereference possibly involving an uninitialized

>> pointer. Since the single statememt between the blocks is unrelated, we

>> can just move it and merge the two conditional blocks together.

>>

>> Contributed-under: TianoCore Contribution Agreement 1.0

>> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>

>> ---

>>   MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableProtocol.c | 22

>> +++++++++-----------

>>   1 file changed, 10 insertions(+), 12 deletions(-)

>

>

> Reviewed-by: Star Zeng <star.zeng@intel.com>

>


Thanks, merged

>

>>

>> diff --git a/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableProtocol.c

>> b/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableProtocol.c

>> index f069458b1cba..f6229ca05c10 100644

>> --- a/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableProtocol.c

>> +++ b/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableProtocol.c

>> @@ -963,6 +963,16 @@ AddTableToList (

>>              AcpiTableInstance->NumberOfTableEntries3 *

>>              sizeof (UINT32)

>>            );

>> +

>> +        //

>> +        // Add entry to the RSDT

>> +        //

>> +        *CurrentRsdtEntry = (UINT32) (UINTN) CurrentTableList->Table;

>> +

>> +        //

>> +        // Update RSDT length

>> +        //

>> +        AcpiTableInstance->Rsdt3->Length =

>> AcpiTableInstance->Rsdt3->Length + sizeof (UINT32);

>>         }

>>

>>         //

>> @@ -977,18 +987,6 @@ AddTableToList (

>>             sizeof (UINT64)

>>           );

>>

>> -      if ((PcdGet32 (PcdAcpiExposedTableVersions) &

>> EFI_ACPI_TABLE_VERSION_1_0B) != 0) {

>> -        //

>> -        // Add entry to the RSDT

>> -        //

>> -        *CurrentRsdtEntry = (UINT32) (UINTN) CurrentTableList->Table;

>> -

>> -        //

>> -        // Update RSDT length

>> -        //

>> -        AcpiTableInstance->Rsdt3->Length =

>> AcpiTableInstance->Rsdt3->Length + sizeof (UINT32);

>> -      }

>> -

>>         //

>>         // Add entry to XSDT, XSDT expects 64 bit pointers, but

>>         // the table pointers in XSDT are not aligned on 8 byte boundary.

>>

>

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Patch

diff --git a/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableProtocol.c b/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableProtocol.c
index f069458b1cba..f6229ca05c10 100644
--- a/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableProtocol.c
+++ b/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableProtocol.c
@@ -963,6 +963,16 @@  AddTableToList (
            AcpiTableInstance->NumberOfTableEntries3 *
            sizeof (UINT32)
          );
+
+        //
+        // Add entry to the RSDT
+        //
+        *CurrentRsdtEntry = (UINT32) (UINTN) CurrentTableList->Table;
+
+        //
+        // Update RSDT length
+        //
+        AcpiTableInstance->Rsdt3->Length = AcpiTableInstance->Rsdt3->Length + sizeof (UINT32);
       }
 
       //
@@ -977,18 +987,6 @@  AddTableToList (
           sizeof (UINT64)
         );
 
-      if ((PcdGet32 (PcdAcpiExposedTableVersions) & EFI_ACPI_TABLE_VERSION_1_0B) != 0) {
-        //
-        // Add entry to the RSDT
-        //
-        *CurrentRsdtEntry = (UINT32) (UINTN) CurrentTableList->Table;
-
-        //
-        // Update RSDT length
-        //
-        AcpiTableInstance->Rsdt3->Length = AcpiTableInstance->Rsdt3->Length + sizeof (UINT32);
-      }
-
       //
       // Add entry to XSDT, XSDT expects 64 bit pointers, but
       // the table pointers in XSDT are not aligned on 8 byte boundary.