Splint - Secure Programming Lint |
|
Download - Documentation - Manual - Links | Sponsors - Credits |
LCLint Release 2.5m
25 May 2000Release 2.5m is a minor upgrade to the last public release, Version 2.4b. It is believed to fix all reported and reproducible bugs in Version 2.4b.
Enhancements
-larchpath path and -lclimportdir dir flagsThe LARCH_PATH and LCLIMPORTDIR environment variables can now be overridden using the command line flags -larchpath and -lclimportdir.Syslog format stringAdded special handling for "%m" in syslog format string (it does not consume an argument) (tests2.4/syslog.c)Hints for type errorsBetter hints for type errors (in presence of pointers) added +charunsignedchar flagalignofAdded support for gcc extentsion __alignof__ (tests2.4/alignof.c)long longSupport LL and ULL constant designators and long long and unsigned long long types (in C99) (suggested by Martin Smoot)Win32 command line wildcardsSupport wildcards in Win32 command lines (by linking with setargv.obj).Bug Fixes
Case MarkersFixed case/default parsing by making them markers instead of statements (switch (p) { case 2: } produced a parse error). (See tests2.4/emptycase.c.)Label ParsingSwitch Body Structure Fixed symbol table structure to support unstructured cases:
switch(a) { case 1: while (c>3) { case 3: ++c; } }In the hope that this won't encourage more code like this! (See tests2.4/duffs.c, bug1.c, bug2.c, bug3.c.)Fixed label parsing to handle labels not followed by statements (Reported by N. Komazaki) (See tests2.4/komazi.c.)Pre-processor Definitions with ParametersFixed pre-processor bug handling command line definitions with parameters (e.g., lclint '-D__P(x)=x') (tests2.4/cpptest.c)Pre-processor HandlingFixed handling of spaces in command line definitions (-D X=3) (reported by Daniel Barker) (tests2.4/command line)LCL pathnamesIncorporated pre-processor fix sent in by N. Komazaki
Fixed handling of "#" (empty) in cpp (reported by Ulrich Ottersbach) (tests2.4/ulrich.c)
Added warning for comment open ("/*") inside comment (tests2.4/innercomment.c)
Fixed handling of direct pathnames in lcl files (reported by Dana Harrington) (tests2.4/subdir/main.lcl)Function Pointer DeclarationsFixed handling of function pointer declarations like, void (**(sig_func))(void);. (reported by Buck Hodges) (tests2.4/enumtest.c)Nested static declarationsFixed handling of static function declarations inside method scopes (tests2.4/nothing.c)printf %n formatFixed handling of %n printf format. It should be /*@out@*/ int * (tests2.4/print.c)enum initializersAdded checking for enum members types (using initializers)enum parsingFixed parsing of undefined system-like identifiers in enum member lists (reported by Steve Fink) (tests2.4/fink.c)gcc __extension__ keywordFixed handling of gcc extension __extension__ (should not be treated as a token) (tests2.4/driverstub.c)Hex ConstantsHexidecimal constants (e.g., 0xFF) are typed as unsigned, but decimal constants are signed.Compound member designator in offsetofFixed parsing of offsetof expressions, like:Bitfield caststypedef struct { union { int i; } u; } S; int main() { return (int)offsetof(S, u.i); }An internal error is raised for casts in bitfield widths:typedef unsigned S; typedef struct { unsigned u : ((S)4); } T;
![]() |
|