From 96e6b8e67b359af8d0c97a5ebf8a00d9be29ce08 Mon Sep 17 00:00:00 2001 From: jlin16 Date: Mon, 8 Feb 2010 05:22:26 +0000 Subject: [PATCH] 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(-) 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]) -- 2.39.2