LCLint Version 1.4c =================== LCLint Version 1.4c is now available from MIT by anonymous ftp. This is a minor release consisting of fixes to problems reported in version 1.4a and a few improvements. (Version 1.4b was not publically released.) Please install the latest version of lclint on your system so you will not run into bugs that have already been fixed. Updated binaries are available now for the alpha, decmips, and sun4 platforms in ftp://ftp.sds.lcs.mit.edu/pub/lclint/lclint..tar.Z. Source code for building other platforms is in ftp://ftp.sds.lcs.mit.edu/pub/lclint/lclint.src.tar.Z. Development is largely driven by user feedback, so please continue to send me suggestions, ideas, complaints and bug reports. Thanks to everyone who sent comments and bug reports. We are also interested in any more general feedback or experience you have to report. Bug reports should be sent to [email protected]. If you have messages of general interest, send them to [email protected]. If you are interested in participating in discussions on lclint use and development, send human-readable mail to [email protected] saying that you would like to join the lclint-interest list. If you want to be removed from this list, send mail to [email protected]. Changes from Version 1.4a: Improvements: ============= o sequence point checking --- detects errors involving undefined behavior because of order of execution (because of modifies and global specifications, this can be done for function calls.) This catches the infamous "a[i++] = i"-type bugs, but also more subtle errors involving modification of parameters or globals if specifications (or specified library functions) are used. o checking enumerated cases (controlled by +misscase) --- for a switch on an enumerated type, report cases which are not handled. [suggested by Albert L. Ting] o messages include location of specification (where relevant) o -mutrep to suppress complaints about representations of mutable types not having sharing semantics. (This is more useful as a control comment, if you are implementing a mutable abstract type with an int handle.) o efficiency improvements (should run at least 25% faster for large systems) Bug Fixes: ========== (apologies for not describing some of these in functionality-level terms) o conditional errors (not popping the stack when the pred is an error) [ reported by Albert L. Ting ] o problem relating to use of noVarInfo (Undeclared global variable messages) [ reported by Mathieu Antoine ] o problem with temporary file names not being unique [ reported (and fix suggested) by Huver Hu ] o makefile environment variable problems [ reported by Lawrence Chim and Huver Hu ] o semantics of imports unclear or incorrect [ reported by Huver Hu ] o spurious rep exposure and return alias messages concerning immutable types [ reported by Yang Meng Tan ] o symtable bug (causes segmentation faults on some systems) [ reported and traced by Rick Farnbach ] o use-before-definition checking on arrays [ suggested by previous bug not being detected by LCLint ] o incorrect modification errors involving structures (copy assignments) o macro parsing broken with '/' o fixed stdlib to make error codes constant int's instead of enum's As far as I know, there are no other known bugs. If you know of a bug not listed (and fixed) here, please report it.