cert.py: Fix FP

This commit is contained in:
Daniel Marjamäki 2018-04-12 20:23:50 +02:00
parent f7d65cd735
commit 8f21ba91e3
3 changed files with 13 additions and 2 deletions

View File

@ -113,14 +113,15 @@ def exp05(data):
continue continue
if not argvar.isPointer: if not argvar.isPointer:
continue continue
if (argvar.constness % 2) == 1: # data is const
continue
argtok = arguments[argnr - 1] argtok = arguments[argnr - 1]
if not argtok.valueType: if not argtok.valueType:
continue continue
if argtok.valueType.pointer == 0: if argtok.valueType.pointer == 0:
continue continue
const1 = argvar.isConst
const2 = arguments[argnr - 1].valueType.constness const2 = arguments[argnr - 1].valueType.constness
if (const1 % 2) < (const2 % 2): if (const2 % 2) == 1:
reportError(token, 'style', "Attempt to cast away const", 'cert-EXP05-C') reportError(token, 'style', "Attempt to cast away const", 'cert-EXP05-C')

View File

@ -351,6 +351,7 @@ class Variable:
isPointer Is this variable a pointer isPointer Is this variable a pointer
isReference Is this variable a reference isReference Is this variable a reference
isStatic Is this variable static? isStatic Is this variable static?
constness Variable constness (same encoding as ValueType::constness)
""" """
Id = None Id = None
@ -369,6 +370,7 @@ class Variable:
isPointer = False isPointer = False
isReference = False isReference = False
isStatic = False isStatic = False
constness = 0
def __init__(self, element): def __init__(self, element):
self.Id = element.get('id') self.Id = element.get('id')
@ -387,6 +389,9 @@ class Variable:
self.isPointer = element.get('isPointer') == 'true' self.isPointer = element.get('isPointer') == 'true'
self.isReference = element.get('isReference') == 'true' self.isReference = element.get('isReference') == 'true'
self.isStatic = element.get('isStatic') == 'true' self.isStatic = element.get('isStatic') == 'true'
self.constness = element.get('constness')
if self.constness:
self.constness = int(self.constness)
def setId(self, IdMap): def setId(self, IdMap):
self.nameToken = IdMap[self.nameTokenId] self.nameToken = IdMap[self.nameTokenId]

View File

@ -26,6 +26,11 @@ void exp05()
dostuff(data); // cert-EXP05-C dostuff(data); // cert-EXP05-C
} }
void print(const char *p);
void exp05_fp() {
print("hello");
}
void exp42() void exp42()
{ {
struct S s1 = {1,2}; struct S s1 = {1,2};