]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Update ECC predicate expression checks for brace-quoted and boolean pointer variables.
authorjlin16 <jlin16@6f19259b-4bc3-4df7-8a09-765794883524>
Mon, 8 Feb 2010 05:22:26 +0000 (05:22 +0000)
committerjlin16 <jlin16@6f19259b-4bc3-4df7-8a09-765794883524>
Mon, 8 Feb 2010 05:22:26 +0000 (05:22 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9946 6f19259b-4bc3-4df7-8a09-765794883524

BaseTools/Source/Python/Ecc/c.py

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