From 96e6b8e67b359af8d0c97a5ebf8a00d9be29ce08 Mon Sep 17 00:00:00 2001
From: jlin16 <jlin16@6f19259b-4bc3-4df7-8a09-765794883524>
Date: Mon, 8 Feb 2010 05:22:26 +0000
Subject: Update ECC predicate expression checks for brace-quoted and boolean
 pointer variables.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9946 6f19259b-4bc3-4df7-8a09-765794883524
---
 BaseTools/Source/Python/Ecc/c.py | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

(limited to 'BaseTools/Source')

diff --git a/BaseTools/Source/Python/Ecc/c.py b/BaseTools/Source/Python/Ecc/c.py
index b8b1d2d6f5..989ba7091d 100644
--- a/BaseTools/Source/Python/Ecc/c.py
+++ b/BaseTools/Source/Python/Ecc/c.py
@@ -742,7 +742,7 @@ def SplitPredicateByOp(Str, Op, IsFuncCalling = False):
             return [Name]
         
         Name = Str[0:Index + IndexInRemainingStr].strip()
-        Value = Str[Index+IndexInRemainingStr+len(Op):].strip()
+        Value = Str[Index+IndexInRemainingStr+len(Op):].strip().strip(')')
         return [Name, Value]
     
     TmpStr = Str.rstrip(';').rstrip(')')
@@ -759,6 +759,8 @@ def SplitPredicateByOp(Str, Op, IsFuncCalling = False):
         TmpStr = Str[0:Index - 1]
 
 def SplitPredicateStr(Str):
+    
+    Str = Str.lstrip('(')
     IsFuncCalling = False
     p = GetFuncDeclPattern()
     TmpStr = Str.replace('.', '').replace('->', '')
@@ -1219,6 +1221,16 @@ def GetVarInfo(PredVarList, FuncRecord, FullFileName, IsFuncCall = False, Target
                 Type = GetRealType(Type, TypedefDict, TargetType)
                 return Type
 
+def GetTypeFromArray(Type, Var):
+    Count = Var.count('[')
+    
+    while Count > 0:
+        Type = Type.strip()
+        Type = Type.rstrip('*')
+        Count = Count - 1
+
+    return Type
+
 def CheckFuncLayoutReturnType(FullFileName):
     ErrorMsgList = []
     
@@ -1931,6 +1943,7 @@ def CheckPointerNullComparison(FullFileName):
                     FuncReturnTypeDict[PredVarStr] = Type
                 if Type == None:
                     continue
+                Type = GetTypeFromArray(Type, PredVarStr)
                 if Type.find('*') != -1:
                     PrintErrorMsg(ERROR_PREDICATE_EXPRESSION_CHECK_COMPARISON_NULL_TYPE, 'Predicate Expression: %s' % Exp, FileTable, Str[2])
 
-- 
cgit v1.2.3