clang API Documentation
#include "ClangSACheckers.h"
#include "clang/AST/CharUnits.h"
#include "clang/StaticAnalyzer/Core/BugReporter/BugType.h"
#include "clang/StaticAnalyzer/Core/Checker.h"
#include "clang/StaticAnalyzer/Core/CheckerManager.h"
#include "clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h"
Go to the source code of this file.
Functions | |
static bool | evenFlexibleArraySize (ASTContext &Ctx, CharUnits RegionSize, CharUnits TypeSize, QualType ToPointeeTy) |
static bool evenFlexibleArraySize | ( | ASTContext & | Ctx, |
CharUnits | RegionSize, | ||
CharUnits | TypeSize, | ||
QualType | ToPointeeTy | ||
) | [static] |
Check if we are casting to a struct with a flexible array at the end.
struct foo { size_t len; struct bar data[]; };
or
struct foo { size_t len; struct bar data[0]; }
In these cases it is also valid to allocate size of struct foo + a multiple of struct bar.
Definition at line 49 of file CastSizeChecker.cpp.
References clang::Type::getArrayElementTypeNoTypeQual(), clang::Type::getAs(), clang::ASTContext::getAsConstantArrayType(), clang::RecordType::getDecl(), clang::ASTContext::getTypeSizeInChars(), clang::RecordDecl::hasFlexibleArrayMember(), clang::CharUnits::isNegative(), clang::CharUnits::isZero(), and clang::LangAS::Last.