Daniel Marjamäki
f78cbda2db
Refactoring: Removed CheckNullPointer::nullPointerByCheckAndDeRef and implemented needed analysis in ValueFlow instead.
2014-06-22 10:02:14 +02:00
Daniel Marjamäki
ef81bc363a
ValueFlow: analysis in condition.
2014-06-19 17:29:41 +02:00
PKEuS
188f9b4509
Fixed #error handling:
...
- Reporting them once is enough
- Don't report them if --force is used - since we silently drop these configurations when we check multiple configurations. Without the fix, -f combined with -D resulted in #error being shown erroneously.
- No redundant preprocessor instance to report them
2014-06-18 17:57:31 +02:00
Daniel Marjamäki
13761927ff
ValueFlow: better analysis in valueFlowAfterCondition of 'if|while ( %var% )' etc
2014-06-18 06:57:48 +02:00
Daniel Marjamäki
9999ce9468
ValueFlow: extend aftercondition analysis below conditional code
2014-06-18 05:51:23 +02:00
Alexander Mai
2e3f26ba58
Patch from Dmitry-Me: reorder checks so that cheaper ones go first, reuse previously computed values, return early on edge condition
2014-06-16 21:36:31 +02:00
amai2012
c61d2b9f41
#5926 Dangerous iterator comparison using operator< on 'std::deque'.
...
std::deque features a random access iterator, so warning stlBoundaries
is a false positive
2014-06-16 20:50:47 +02:00
Daniel Marjamäki
847bb44bdd
ValueFlow: Improved analysis after condition when ! operator is used
2014-06-16 16:39:41 +02:00
orbitcowboy
76f3f67bcf
Fixed fsanitize=undefined: left shift of negative value -10000 in lib/templatesimplifier.cpp.
2014-06-16 10:58:41 +02:00
Daniel Marjamäki
0e971f2979
Merge pull request #341 from simartin/ticket_5268
...
Ticket #5268 : Properly detect function heads when in Tokenizer::simplifyEnum
2014-06-15 18:14:20 +02:00
Daniel Marjamäki
cb9725b18a
ValueFlow: Fixed testcase
2014-06-15 17:15:09 +02:00
Daniel Marjamäki
a27ca11b85
Fixed #5916 (ValueFlow: Add a valueFlowAfterCondition() function)
2014-06-15 16:47:01 +02:00
Simon Martin
efb12f0409
Ticket #5268 : Properly detect function heads when in Tokenizer::simplifyEnum.
2014-06-15 15:52:58 +02:00
Robert Reif
1f09cb0c30
Fixed #5807 (non virtual dtor in virtual class)
2014-06-14 12:55:20 +02:00
Daniel Marjamäki
17f1841fba
Merge pull request #339 from simartin/ticket_5868
...
Ticket #5868 : Ignore variables called like a typedef when substituting typedefs
2014-06-14 12:38:02 +02:00
PKEuS
8b9daadd25
Replaced static variable isCPP in Token (was not threadsafe):
...
- Encapsulate parameters passed through AST compiler functions in a struct
-> Reduces maintenance overhead when changing them
-> Contains parameter indicating if the file is C or C++
- Added eKeyword Token type (at the moment, only true for C++ keyword "delete", but should be set for other keywords as well)
2014-06-14 10:28:12 +02:00
Simon Martin
d588ed49b3
Ticket #5868 : Ignore variables called like a typedef when substituing typedefs.
2014-06-14 00:50:14 +02:00
Daniel Marjamäki
ad879320e5
ValueFlow: Fixed 'function call => calculation' value flow
2014-06-13 16:34:57 +02:00
Daniel Marjamäki
a4a6f3e1be
Tokenizer: Removed Tokenizer::simplifyConditionOperator(). Using the AST and ValueFlow, it should be much easier to parse ?: than before.
2014-06-10 19:30:13 +02:00
Daniel Marjamäki
42c3b3c89d
Library: Change range operator in validation pattern to ':'
2014-06-08 18:12:11 +02:00
Simon Martin
dc12a73987
Ticket #5907 : Properly handle extern declarations in Tokenizer::simplifyVarDecl.
2014-06-08 14:59:58 +02:00
Daniel Marjamäki
9e81fa04b2
Library: Added 'podtype' element. Partial fix for #5623
2014-06-08 12:09:00 +02:00
Alexander Mai
e1513090e2
#5909 crash: clang: test/Preprocessor/ifdef-recover.c. Avoid segfault in Preprocessor::getcfgs() on invalid code.
2014-06-08 10:02:16 +02:00
Daniel Marjamäki
4c7b0806aa
Library: handle validation expression '-1000-0'. Ticket #5847
2014-06-07 16:28:29 +02:00
Alexander Mai
4d5b463613
Fix clang compiler warning in mathlib.cpp and repair test case for #5895
2014-06-07 13:16:02 +02:00
PKEuS
8fe515b929
Improved testing of AST, added unit test for #5787
2014-06-05 17:39:14 +02:00
orbitcowboy
6d0f490138
#5895 - Fixed potential signed integer overflow in Checkother:getvalue. Added regression test.
2014-06-05 16:41:10 +02:00
PKEuS
51f381edf3
Fixed VS warnings
2014-06-04 18:55:29 +02:00
PKEuS
2455b76abd
Fixed lots of bugs in the AST:
...
- Support new and delete
- Properly handle "..."
- References and rValue references as function parameters
- Destructor definitions
2014-06-04 18:47:56 +02:00
PKEuS
26e09ae4a4
Fixes for test suite, added a TODO unit test about bad typedef simplification
2014-06-04 18:46:11 +02:00
PKEuS
39b64ea5fb
Simplify rValue reference arguments without name (&& -> & &)
2014-06-04 18:45:56 +02:00
PKEuS
8db0790407
Tokenizer::tokenize() can now be called without AST being created
2014-06-04 18:45:28 +02:00
orbitcowboy
8fe163285f
MathLib: Added missing testcase for incdec.
2014-06-04 08:41:30 +02:00
orbitcowboy
60e80b6fb1
Fixed #5885 - fsanitize=undefined: signed integer overflow: 2147483647 + 1 cannot be represented in type 'int' in lib/tokenize.cpp.
2014-05-29 18:25:01 +02:00
orbitcowboy
e9144d1a78
Fixed #5890 - crash: wesnoth desktop_util.cpp / unicode.hpp.
2014-05-29 02:58:18 +02:00
Robert Reif
e5ae575ace
Fixed #5867 (invalid debug warnung: Scope::checkVariable : varid0)
2014-06-02 06:18:32 +02:00
Alexander Mai
ad1662a201
#5875 fix 'lib/checksizeof.cpp:142:26: runtime error: member call on null pointer of type 'Token'. Improve error handling in CheckSizeof::checkSizeofForPointerSize()
2014-06-01 22:18:17 +02:00
Pierre Schweitzer
1cf2e36dd5
Add a new test for OpenFile function from windows.cfg.
...
It is here as a reminder for a TODO. When used with OF_EXIST flag, the function OpenFile doesn't return a handle and thus, doesn't leak any resource.
As cppcheck doesn't support such feature yet, it's added a TODO not to be forgotten for later fix when cppcheck supports this.
Also added a naive check, just to ensure the OpenFile check doesn't get broken when adding support for OF_EXIST.
2014-06-01 00:00:49 +02:00
Martin Ettl
af369b4925
astyle run [ci skip]
2014-05-16 23:01:21 +02:00
amai2012
6f31ce334d
#5875 Fix 'lib/mathlib.cpp:559:43: runtime error: division by zero'. Several fixes to MathLib::divide(): avoid division by zero, handle various representation of 0 value, use 'nan.' instead of '-nan.0'
2014-05-31 18:25:23 +02:00
amai
98ea1397b3
#5875 clang ubsan errors: lib/checkassignif.cpp:58:34: runtime error: member call on null pointer of type 'Token'
2014-05-31 15:12:04 +02:00
Daniel Marjamäki
66ad3c97b9
Fixed #5857 (strPlusChar: Crash on invalid code 'int+;')
2014-05-31 10:34:00 +02:00
Daniel Marjamäki
70b4c945de
Fixed #5874 (False positive: 'opposite conditions in nested if' with arrays)
2014-05-30 19:19:24 +02:00
orbitcowboy
27cee5caa5
Fixed CID 1216439: potential copy&paste error in testing symbol database.
2014-05-28 17:05:42 +02:00
Simon Martin
966491d40b
Added a test for out-of-bounds character array access.
2014-05-27 16:21:13 +02:00
Daniel Marjamäki
ed78d3e148
Library: Better error reporting when loading fails
2014-05-26 17:00:41 +02:00
PKEuS
a407b55945
Added support for lambdas to AST
...
Fixed bug that return statement left an operand on the stack
2014-05-25 21:55:39 +02:00
PKEuS
04f3caf8e8
Fixed debug message #5159
2014-05-25 14:16:03 +02:00
PKEuS
4f61e9783b
Fixed VS warnings in testsymboldatabase.cpp
2014-05-25 14:16:03 +02:00
PKEuS
55c87248ba
Fixed crash on complex cast.
2014-05-24 20:21:08 +02:00
PKEuS
d42275c5f1
Fixed TODO in checkAssignBoolToFloat
2014-05-24 20:06:45 +02:00
Alexander Mai
e6a394d514
CheckBool::checkAssignBoolToFloat() - don't crash on unknown variables
2014-05-24 19:15:43 +02:00
PKEuS
38aaa46804
Stabilized AST:
...
- Fixed broken simplification causing crashs when cast was followed by unary minus (real world examples from arch/parisc/math-emu/ (linux-kernel))
- Stabilized determination of unary and binary operators
2014-05-24 19:05:04 +02:00
Alexander Mai
2c8087e34f
#4375 New check: add style warning about 'double d=false;' Add a new check to CheckBool. Also implement Variable::isFloatingType()
2014-05-24 18:35:49 +02:00
PKEuS
effa38c322
Fixed #5863 (False positive: array index is used before limits check)
2014-05-24 17:50:01 +02:00
PKEuS
a04036337d
Fixed #5860 : Don't show returnTempReference for calculations on unknown types
2014-05-24 12:50:04 +02:00
PKEuS
adf38fcfd0
Further include cleanup
2014-05-24 12:50:04 +02:00
amai2012
00e28de3b7
Merge pull request #315 from simartin/ticket_5823
...
Ticket #5823 : Properly count template parameters in TemplateSimplifier::useDefaultArgumentValues
2014-05-24 11:47:14 +02:00
PKEuS
b78131cfcf
Improved cast detection in AST:
...
-> Make use of it in checkother.cpp
Use tokenizer simplification instead of reimplementation for test suite
2014-05-24 11:29:32 +02:00
Simon Martin
2b809800b6
Ticket #5823 : Properly count template parameters in TemplateSimplifier::useDefaultArgumentValues and handle casts in template parameters' default values.
2014-05-23 23:38:40 +02:00
Simon Martin
fcff8d39d9
Ticket #5816 : Properly handle template'd template parameters in enum initializers.
2014-05-23 21:25:42 +02:00
PKEuS
bc0682d1e9
Enhancements related to duplicate expression checking:
...
- Fixed astIsFloat() for complex expressions
- Enhanced support for commutative operators (#5260 )
2014-05-22 21:46:48 +02:00
PKEuS
f7a41057ad
Use AST in CheckIO::checkCoutCerrMisusage() - fixes #3254 .
2014-05-22 20:25:54 +02:00
PKEuS
9dd4ac68c0
Refactorization in CheckNullPointer:
...
- Use AST to detect dereferences
- Added more unit tests
- Removed handling of unknown constructs in CheckNullPointer::isPointerDeRef()
Added link to verbose message cstyleCast.
2014-05-22 19:48:00 +02:00
PKEuS
6635abbe55
Improved check: Complain about returning reference to literals or reference to calculation result ( #4317 )
2014-05-22 11:39:11 +02:00
orbitcowboy
031020ae4a
#Fixed 5485: Wrong simplification of numbers like 1e+007 to 1e+007.0
2014-05-22 17:40:15 +02:00
PKEuS
4cad064c3c
Fixed false positive on C code introduced by last commit
2014-05-21 20:36:19 +02:00
PKEuS
d19eabde42
New Check: Compare pointer with '\0' ( #4070 )
2014-05-21 19:12:07 +02:00
PKEuS
cdfed32500
Merged checkSelfAssignment() into checkDuplicateExpression():
...
- Fixed false negatives on self assignments of more complex expressions like "a.b"
- New false negative on self assignment in initialization
- Support this->... pattern in isSameExpression()
- Fixed #5819 : Check type of operands
2014-05-21 18:19:42 +02:00
PKEuS
7b1eca700b
Fixed bug in setVarId: VarIds for member functions defined inline in class were not properly set
2014-05-21 17:30:58 +02:00
PKEuS
48c3d02fc3
Fixed false positives and false negatives in 'oppositeInnerCondition' (among others: #5808 )
2014-05-21 14:38:41 +02:00
PKEuS
01a0154daa
Fixed false positive #5848
2014-05-21 13:45:36 +02:00
orbitcowboy
90c1016c74
Fixed #5842 : remove C99 static keyword between [] in tokenizer.
2014-05-13 16:28:28 +02:00
Alexander Mai
be9a566d48
Refactoring/small corrections to fix warnings from clang -fsanitize=undefined 'member call on null pointer'
2014-05-20 21:55:08 +02:00
Robert Reif
e993e2927c
Fixed #5831 (FP in 1.65: call of pure virtual function 'throw' in destructor)
2014-05-20 06:10:34 +02:00
PKEuS
d1c4777053
Fixed two bugs in AST compilation ( #5830 ):
...
- Correctly parse operators .* and ->*
- Support empty branch in ternary expression (a?:c)
2014-05-19 21:54:59 +02:00
PKEuS
5c566e838c
Fixed false positive "multiplySizeof" in TortoiseSVN
2014-05-19 20:57:13 +02:00
Philipp Kloke
ed7d0b321b
Bugfixes for AST and AST testing:
...
- Validate AST in test suite: Check for operand1 being set if operand2 is non-zero
- Fixed buggy unit tests in AST
- Fixed detection unary operator* after return statement (MPC-HC false positive)
2014-05-19 11:17:37 +02:00
Mark de Wever
d6db261213
Fixed #5827 (Invalid token match patterns)
2014-05-19 06:31:38 +02:00
PKEuS
5fbd58d98d
Fixed messages of CheckInternal, fixed a false positive.
2014-05-18 20:39:52 +02:00
PKEuS
9cb544241d
Internal checking is now enabled by the macro CHECK_INTERNAL
2014-05-18 19:50:06 +02:00
PKEuS
683d0b7e82
Partially rewritten AST compilation:
...
- More straightforward approach for handling right-to-left associativity
- More straightforward approach to handling unary operators
- Improved handling of brackets
This fixes #5784 , #5795 , #5797 , #5799 , #5810 and a bunch of other problems
2014-05-18 12:10:39 +02:00
Alexander Mai
91e7116de1
Fix regression from first attempt fixing #5811 ( 9dce9bddcb
)
2014-05-17 19:14:29 +02:00
Alexander Mai
9dce9bddcb
#5811 false postive: (error) Null pointer dereference
2014-05-17 18:18:20 +02:00
Daniel Marjamäki
e04351ec33
re-enable tests in testnullpointer
2014-05-17 16:44:44 +02:00
Simon Martin
69d294c6c4
Ticket #5816 : Skip typename in template arguments for enum initializers.
2014-05-17 08:50:12 +02:00
PKEuS
dd76aa44be
Merge pull request #309 from simartin/ticket_5814
...
Ticket #5814 : Handle A::B as template parameter for enum initializers.
2014-05-16 08:24:45 +02:00
Simon Martin
92cc17110d
Ticket #5814 : Handle A::B as template parameter for enum initializers.
2014-05-15 21:52:57 +02:00
Alexander Mai
f2e5da290b
Replace 2 invalid test cases added while fixing #5793 by a valid one
2014-05-15 21:20:16 +02:00
Simon Martin
e61e1cb13d
Ticket #5786 : Properly handle cv-qualified member pointers as template parameter.
2014-05-14 22:27:31 +02:00
Daniel Marjamäki
7ecdb30308
Fixed #5771 (false positive: (warning) When using 'char' variables in bit operations, sign extension can generate unexpected results.)
2014-05-13 15:53:31 +02:00
Alexander Mai
146bf11aa7
#5793 - False positive: Deallocation of an auto-variable (at reference notation)
2014-05-12 19:53:49 +02:00
PKEuS
a3bb8bf39c
AST: Parse ternary and assignment operators as right-to-left and on the same precedence level
2014-05-11 17:50:58 +02:00
Alexander Mai
b139ae3209
#5782 Endless recursion in CheckClass::checkReturnPtrThis(). Break endless recursion by remembering the callstack
2014-05-11 12:26:24 +02:00
Daniel Marjamäki
0dfbbd0f80
Fixed #5479 (Tokenizer: don't remove parentheses in code 'a<b<c>>(2)')
2014-05-11 08:22:28 +02:00
Daniel Marjamäki
8cc1f664d8
Uninitialized member variable: Fixed false negative when struct is read
2014-05-10 20:20:55 +02:00
Daniel Marjamäki
4c344adcf1
Uninitialized struct member: fixed false negative when struct assignment is seen
2014-05-10 19:56:44 +02:00
PKEuS
04fbbdb5e8
Refactorized CheckBufferOverrun::arrayIndexThenCheck() and fixed false negative
2014-05-10 13:00:44 +02:00
Daniel Marjamäki
4e2c0617d3
Merge pull request #303 from simartin/ticket_5297
...
Ticket #5297 : simplifyCalculations should pass once more on simplified tokens
2014-05-10 10:18:29 +02:00
Simon Martin
1e4902cb65
Ticket #5297 : simplifyCalculations should pass once more on tokens being simplified.
2014-05-10 09:37:56 +02:00
Daniel Marjamäki
2905593cf6
Merge pull request #302 from simartin/ticket_5774
...
Ticket #5774 : Properly handle "typename..." in template parameter list.
2014-05-10 09:32:06 +02:00
Simon Martin
46d8d81176
Ticket #5774 : Properly handle "typename..." in template parameter list.
2014-05-09 22:20:22 +02:00
PKEuS
edd84c0906
Fixed #5773 : Don't prepend "std::" to function definitions
2014-05-09 21:58:28 +02:00
PKEuS
c0fc47643f
Fixed false positive #5772 : Use AST to check if modulo operation is preceded by an arithmetical operation.
2014-05-09 21:58:28 +02:00
Daniel Marjamäki
1541e27e4a
Fixed #5533 (False positive: 'Assignment of function parameter has no effect outside the function.')
2014-05-09 18:43:29 +02:00
orbitcowboy
dfe876fa4c
Fixed typo in comment, no functional changes.
2014-05-07 23:39:32 +02:00
Daniel Marjamäki
cb43bee10d
Same expression: don't warn for same expressions when there is assignment
2014-05-09 06:16:27 +02:00
Simon Martin
512e22d1ba
Ticket #5315 : Memory leak analysis confused by ((variable).attribute) notation.
2014-05-08 20:58:24 +02:00
Daniel Marjamäki
331d7e2e42
Merge pull request #297 from simartin/ticket_5605_5759
...
Fix ticket #5605 (take 3)
2014-05-08 15:51:42 +02:00
Simon Martin
2a6acdf357
Ticket #5605 : Don't consider '>' as a default template parameter value. Don't choke on template parameters with erroneous default values.
...
Ticket #5759 : Properly handle pointers to class members in template parameter lists.
Ticket #5762 : Handle template specialization tokens.
2014-05-08 13:54:56 +02:00
Daniel Marjamäki
9fc8bdcbac
Fixed #5770 (AST: better handling of 'a.b[c.d]==0')
2014-05-08 06:48:53 +02:00
Daniel Marjamäki
5ad3ac2653
Fixed #5695 (FP: Mismatching assignment and comparison)
2014-05-06 19:35:47 +02:00
Daniel Marjamäki
b354de6b23
Fixed #5750 (FP:Opposite conditions in nested 'if' blocks lead to a dead code block)
2014-05-06 16:15:12 +02:00
Daniel Marjamäki
6e25280c90
Reverted fix for #5605 since it cause this crash: #5759
2014-05-05 21:11:47 +02:00
Robert Reif
ae96491d6c
Fixed #5756 (declspec(nothrow) not supported)
2014-05-04 20:47:20 +02:00
Daniel Marjamäki
7d583e639c
AST: Fixed handling of '(((typeof(x))*)0)'
2014-05-04 18:36:04 +02:00
Daniel Marjamäki
42b85088c5
Double free: Improved handling of noreturn functions. Partial revert of previous fix.
2014-05-04 13:11:21 +02:00
Daniel Marjamäki
636a15ac55
Doublefree: Fixed FP when exit() is called
2014-05-04 12:02:55 +02:00
Daniel Marjamäki
5edb6092a1
Merge pull request #293 from simartin/ticket_5709
...
Ticket #5709 : Comma operator not properly tokenized.
2014-05-04 11:46:04 +02:00
Robert Reif
888fd44039
Fixed #5609 (Wrong warning: %zu requires 'size_t' - but type is 'std::size_t')
2014-05-04 07:55:23 +02:00
Simon Martin
b03f36cd71
Ticket #5709 : Comma operator not properly tokenized.
2014-05-03 21:35:04 +02:00
Daniel Marjamäki
1903d95015
Fixed #5661 (--suppress=missingInclude has no effect)
2014-05-03 19:31:15 +02:00
Daniel Marjamäki
ed1d63ffc0
Fixed #5636 (FP: matrix out of bounds)
2014-05-03 18:12:06 +02:00
Simon Martin
ffe6a0be2b
Ticket #5605 : Don't consider '>' as a default template parameter value. Don't choke on template parameters with erroneous default values.
2014-05-03 16:26:14 +02:00
Martin Ettl
b363d0641a
posix.cfg: Fixed FP for getcwd().First and second parameter is allowed to be zero.
2014-05-02 04:56:12 +02:00
Daniel Marjamäki
5a23b739da
ValueFlow: Improved bailout when variable is reassigned
2014-05-03 12:49:07 +02:00
Daniel Marjamäki
4b7aaba159
AST: assignment operators are executed from right to left
2014-05-03 12:08:42 +02:00
Alexander Mai
d3e8bbdc51
#5618 False positive: (performance) Use const reference for 'temp' to avoid unnecessary data copying. - redundantCopyLocalConst/CheckOther::checkRedundantCopy() is prone to false positives. As a quick fix that check becomes inconclusive.
2014-05-02 20:09:38 +02:00
Robert Reif
7d762ca9f7
Made 'unhandled exception' inconclusive and style message. #5751
2014-05-02 06:57:23 +02:00
Daniel Marjamäki
fadc27092e
Fixed #5752 (FP (error) Possible null pointer dereference)
2014-05-01 15:15:26 +02:00
Robert Reif
f6aaf6cc0d
Unhandled exceptions: Dont warn when there are unhandled exceptions in main() function. #5751
2014-05-01 13:41:01 +02:00
Alexander Mai
d2ebd718a9
#5691 False positive: autovarInvalidDeallocation - function name 'delete' in C code
2014-05-01 07:32:37 +02:00
orbitcowboy
e48550d8d7
Merge branch 'master' of https://github.com/danmar/cppcheck
2014-04-23 01:24:01 +02:00
Daniel Marjamäki
b5e023a46c
Fixed #5472 (sizeof not handled as operator with respect to null pointer dereference)
2014-04-29 20:09:11 +02:00
Daniel Marjamäki
fc24d491cc
Fixed #5560 (false positive: C-style pointer casting)
2014-04-29 06:21:30 +02:00
Daniel Marjamäki
648479d909
AST: Fixed tree for 'a.b[5]'
2014-04-29 06:09:26 +02:00
Daniel Marjamäki
1233d8e47f
Fixed #5657 (false positive: (error) Possible null pointer dereference: p)
2014-04-28 15:54:54 +02:00
Daniel Marjamäki
3300d39854
Fixed #5721 (valueFlowBeforeCondition: stop when goto label is seen)
2014-04-28 06:21:48 +02:00
Daniel Marjamäki
9c74d914d7
Fixed #5667 (Tokenizer: simplify 'void (X::*f)()' to 'void *f')
2014-04-27 19:49:21 +02:00
Daniel Marjamäki
d279f3fb41
Fixed #5736 (AST: proper handling of 'a=(b).c;')
2014-04-27 18:03:50 +02:00
Daniel Marjamäki
9f2e37da37
AST: fixed 'a.b++' and '*c[5]--'
2014-04-27 16:02:24 +02:00
PKEuS
ecec4b0b46
Fixed false positive #5187 : arithOperationsOnVoidPointerError when referencing void*
2014-04-27 12:18:33 +02:00
PKEuS
866ab1ce14
Fixed false positive #5689 : Care about usage of return values of memory functions
2014-04-27 12:18:33 +02:00
PKEuS
ea23a0467b
Fixed false positive #5732 : autovarInvalidDeallocation on pointer to array
2014-04-27 12:18:33 +02:00
Daniel Marjamäki
bde6698bcd
Fixed #5731 (False positive with opposite conditions)
2014-04-27 10:21:20 +02:00
Daniel Marjamäki
7317785e32
astyle formatting
...
[ci skip]
2014-04-27 10:20:21 +02:00
Alexander Mai
0b8dcbb441
Fix compiler warning about dead code due to disabled tests
2014-04-27 09:48:21 +02:00
Alexander Mai
17ec0af6a7
#5734 A FP literalWithCharPtrCompare was issued upon comparison with a char referenced within a string literal
2014-04-27 09:40:13 +02:00
Robert Reif
ca9386859b
Tokenizer: replace ') const| {' pattern to detect function start
2014-04-26 18:31:56 +02:00
Robert Reif
cd6332d960
Tokenizer: replace ') const| {' pattern to detect function start
2014-04-26 18:30:09 +02:00
Alexander Mai
b5c580a59e
Fix some clang warnings - most related to semantic doxygen errors
2014-04-26 16:17:26 +02:00
Alexander Mai
b74e997435
Fix false positive nullPointer messages within sqlite3 after goto by adding a suitable bailout inside valueFlowAfterAssign()
2014-04-26 14:41:28 +02:00
Daniel Marjamäki
11856b51aa
AST: Fixed handling of 'a=b(c**)+1'
2014-04-26 13:32:08 +02:00
Daniel Marjamäki
c34616a6ba
AST: Fixed handling of 'a = b.c[++(d.e)];'
2014-04-26 13:16:34 +02:00
Frank Zingsheim
ffa55bbaa0
Fixed #5725 (FP: multicondition Expression is always false because 'else if' in pngwrite.cxx (LibreOffice))
2014-04-26 11:59:38 +02:00
Daniel Marjamäki
853d56030b
Fixed #5559 (false positive: (error) Possible null pointer dereference: pSTRunner)
2014-04-26 11:27:58 +02:00
Daniel Marjamäki
8602d13dc9
Fixed #5722 (AST: wrong handling of 'x = ((a[i])->getx)();' - the 'x' is an operand of the =)
2014-04-25 06:06:54 +02:00
Daniel Marjamäki
9406f3428a
IncompleteStatement: Fixed false positive when '({..})' blocks are used
2014-04-24 06:32:29 +02:00
Alexander Mai
5c98e4d039
Merge branch 'master' of https://github.com/danmar/cppcheck
2014-04-23 20:50:48 +02:00
Alexander Mai
9412f9d216
#5717 Segmentation fault when providing multiple --include=/path/to/header arguments.
2014-04-23 20:50:16 +02:00
Daniel Marjamäki
d144197d7e
Fixed segfault
2014-04-23 19:49:16 +02:00
Daniel Marjamäki
aea528c763
enum: don't simplify enum constant that is assigned
2014-04-23 17:10:17 +02:00
Daniel Marjamäki
272fcc18d8
Don't warn about redundant number statement in '({ do_something(); 0; })'
2014-04-23 16:23:19 +02:00
Frank Zingsheim
87354bf9d2
Fixed #5707 (false negative: unreachable code is not detected (code after return))
2014-04-23 07:58:43 +02:00
Daniel Marjamäki
3c5cf299e3
Fixed #5708 (Improve oppositeInnerCondition)
2014-04-23 07:57:13 +02:00
orbitcowboy
a6af8f5dcf
#5748 : Fixed FP (wrongmathcall) do not warn if an object calls a function foo.log(0).
2014-04-23 01:23:38 +02:00
Daniel Marjamäki
fe80f858d1
ValueFlow: Improved analysis in the valueFlowAfterAssign
2014-04-22 16:10:20 +02:00
Alexander Mai
2c3807f089
#5703 - Segfault recursive loop - Patch by zingsheim
2014-04-21 22:13:02 +02:00
Alexander Mai
623e5db0b2
#5702 crash: clang: test/Parser/cxx0x-member-initializers.cpp (bailout withn an internal error)
2014-04-21 21:44:17 +02:00
Mark de Wever
6f3e3f5e2e
Fixed #5701 (FP for std::unordered_map::operator[]; there is no const version)
2014-04-21 16:39:44 +02:00
Daniel Marjamäki
52e0e4453b
Fixed #5646 (FP: pointer to array is not assigned a value.)
2014-04-21 16:14:49 +02:00
Daniel Marjamäki
c98beafb6d
Fixed #5675 (wrong AST generated for 'a>>=b')
2014-04-21 13:05:34 +02:00
Daniel Marjamäki
04cd261ee2
Fixed #5664 (false positive: (error) Uninitialized variable: j (Comma operator in for loop))
2014-04-21 10:32:29 +02:00
Daniel Marjamäki
a406509d99
Fixed Travis build, use test function
2014-04-21 08:20:13 +02:00
Robert Reif
6ff5de2118
Fixed #5697 (Check for throw in __attribute__((nothrow)) function)
2014-04-20 20:40:55 +02:00
Daniel Marjamäki
44a66e6a5a
Fixed #1416 (false negative resource leak when calling fdopen)
2014-04-20 10:50:32 +02:00
Robert Reif
36f4431481
Fixed #4800 (Check unhandled exceptions)
2014-04-20 08:58:36 +02:00
Daniel Marjamäki
0c5707ebf1
Fixed #5512 (library (memory): extending standard free deallocator with allocators in custom cppcheck configuration file)
2014-04-19 13:15:06 +02:00
Martin Ettl
ed54b93317
Fixed FP in posix.cfg and mkdir() for second parameter.
2014-04-18 21:46:32 +02:00
Daniel Marjamäki
2d645f57b9
Fixed #5576 (false positive: (POSIX) (error) Resource leak: sockfd)
2014-04-18 18:18:47 +02:00
Daniel Marjamäki
a9943fe6d0
Fixed #5525 (Closing a socket file descriptor gives an error: Mismatching allocation and deallocation)
2014-04-18 17:05:44 +02:00
Daniel Marjamäki
56eb717b8a
Fixed #5656 (false positive: (error) Possible null pointer dereference: f)
2014-04-18 16:10:18 +02:00
Daniel Marjamäki
6146c8f5bb
Tokenizer: Fixed bad simplifyComma for code 'return a ? b = c , d : e ;'
2014-04-18 13:38:48 +02:00
Alexander Mai
1d78d74175
Add test to improve coverage of CheckIO::checkWrongPrintfScanfArguments()
2014-04-18 11:39:58 +02:00
Alexander Mai
ccba934cb1
#5684 The scope of the variable 'p' can be reduced - But it can not.
2014-04-17 21:32:56 +02:00
Daniel Marjamäki
064844f8db
Tokenizer: Fixed bad simplifyComma for code 'a ? b = c , d : e ;'
2014-04-17 18:47:55 +02:00
Daniel Marjamäki
8d5a9893d5
Fixed #5682 (False positive: (style) Same expression on both sides of '&&')
2014-04-16 16:04:46 +02:00
Daniel Marjamäki
5c116c622d
AST: Fixed iscast detection in '*((DWORD*)&buf[0])'
2014-04-15 15:46:26 +02:00
orbitcowboy
3d0217b69e
Implemented a slower but shorter version of MathLib::isNullValue() as suggested by PKeuS. Removed not needed test cases. Improved doxygen documentation for MathLib::IsNullValue().
2014-04-14 05:27:38 +02:00
Daniel Marjamäki
5ee85ee88a
ValueFlow: Improved handling of bitand against a single-bit integer literal
2014-04-14 06:45:39 +02:00
Mark de Wever
b4b340b7be
Fixed #5677 (Fix overzealous substr() warning)
2014-04-13 19:04:35 +02:00
Daniel Marjamäki
79942df842
Fixed #5602 (false positive on std::vector - after unknown macro around the function header)
2014-04-13 13:05:30 +02:00
Alexander Mai
547803f581
#5592 - crash: gcc: testsuit: gcc.c-torture/compile/limits-declparen.c (Limit stack depth below createAst()
2014-04-13 12:47:54 +02:00
PKEuS
9bfc2b618b
Fixed crashes random crashes in multithreading caused by useless creation of CheckUnusedFunctions instance per thread.
2014-04-13 11:56:38 +02:00
Alexander Mai
73fc3d6a13
#5300 - Invalid encoding in XML output (use escape sequence string for non-printable characters)
2014-04-13 09:50:57 +02:00
PKEuS
8cb3b13e56
Support "else if" and do-loop in CheckStl::checkDereferenceInvalidIterator()
2014-04-12 20:03:07 +02:00
PKEuS
e8ac355b39
Refactorized iterator checking:
...
- Fixed false positive #5669
- Use symboldatabase in CheckStl::pushback()
- Improved support for erase on std::vector and find
2014-04-12 20:03:07 +02:00
Daniel Marjamäki
1252c70449
Symbol database: tweaked tests
2014-04-12 20:02:34 +02:00
Martin Ettl
82092e412a
MathLib::isNullValue(): Fixed bug in detecting zero values. Improved test coverage of MathLib::IsNullValue().
2014-04-12 02:14:50 +02:00
Daniel Marjamäki
9d51bfd015
Fixed #5397 (False positive: Same expression on both sides of '&')
2014-04-12 16:06:31 +02:00
PKEuS
7ffc313748
Save "->" in Token::originalName if simplified to "."; Fix false positive #4890 .
2014-04-12 12:04:56 +02:00
PKEuS
9c921ab657
Fixed handling of member function pointers in setVarId and SymbolDatabase ( #4577 )
2014-04-12 12:04:55 +02:00
PKEuS
83f4657e69
Fixed remaining issue in #3503 : Member function taking a function pointer must not be "simplified" to a variable initialization
2014-04-12 12:04:55 +02:00
orbitcowboy
9c08885caf
MathLib:IsNullValue(): using a Finite State Machine to determine a string value contains a numeric NULL value. The NULL value can be Integer, Binary, Hex, Octal. The corresponding unit test cases are also included.
2014-04-11 01:27:05 +02:00
orbitcowboy
66329fe8b8
posix.cfg: Fixed FP for isatty() function and added unit cases.
2014-04-10 17:53:04 +02:00
Robert Reif
7eb3988415
Fixed #5659 (False negative: mismatching allocation / deallocation whith using namespace)
2014-04-11 05:40:37 +02:00
Alexander Mai
ab2f8bfba3
Tidy up MathLib::isInt() - using a state machine approach
2014-04-10 22:46:55 +02:00
PKEuS
b10fce304e
Don't suggestInitializationList for arrays used as initializer ( #5640 )
2014-04-10 22:28:02 +02:00
PKEuS
c33498fa0b
Fixed false positive redundantAssignment when operator() is called ( #5568 )
2014-04-10 21:56:30 +02:00
Alexander Mai
559a2bc2c8
Avoid FP exceptThrowInNoThrowFunction and exceptThrowInNoexecptFunction
2014-04-10 21:55:49 +02:00
PKEuS
e39b89efc3
Throw more syntaxErrors from SymbolDatabase, fixing #5663
2014-04-10 20:11:03 +02:00
PKEuS
25b1f2f541
Fixed #5643 (crash on address-of-operator& in condition) as suggested by serval2412
2014-04-10 19:49:21 +02:00
Alexander Mai
e19129a409
Fix #4724 (Error in calculation shift operation: wrong sign: 1UL << 63)
2014-04-10 19:22:14 +02:00
Robert Reif
b0af67f369
Fixed #5486 (false positive: (warning) %zd in format string (no. 1) requires 'ssize_t' but the argument type is 'ssize_t {aka long}'.)
2014-04-10 17:25:11 +02:00
Robert Reif
847d28d283
Fixed #5638 (is there any plan to check noexcept correctness?)
2014-04-10 16:17:10 +02:00
Robert Reif
4ae204e46b
Fixed #5659 (False negative: mismatching allocation / deallocation whith using namespace)
2014-04-10 16:11:11 +02:00
Daniel Marjamäki
c8ae1e4751
Fixed #5658 (false positive: (error) Uninitialized variable: s)
2014-04-10 15:59:37 +02:00
orbitcowboy
baf8d09a0d
Fixed FP for nullpointer dereference when using putchar.
2014-04-09 17:02:17 +02:00
Daniel Marjamäki
9b1d058410
Fixed #5660 (false positive: (error) Uninitialized variable: result)
2014-04-10 06:40:53 +02:00
Daniel Marjamäki
59cd1879db
Fixed #5467 (False positive incorrectly claiming use after erase)
2014-04-09 10:32:56 +02:00
orbitcowboy
dd61c5db47
Fixed FP, nullpointer for memchr.
2014-04-08 18:39:50 +02:00
Alexander Mai
89dc652af9
#5631 Typo and misleading error message in negativeMemoryAllocationSize
2014-04-08 20:23:00 +02:00
Alexander Mai
a06371e063
Fixes for Doxygen + code formatting
2014-04-07 20:39:19 +02:00
unknown
9ae59290dd
#5645 False positive Null pointer derefence about first argument to fputc()
2014-04-07 12:08:34 +02:00
Daniel Marjamäki
d7e2e3bd5e
Fixed #5502 (FP: Dereferencing 'b' after it is deallocated / released)
2014-04-06 18:45:24 +02:00
Daniel Marjamäki
049d68ae7d
AST: Fixed bad syntax tree for 'if (x()[0]==1);'
2014-04-05 08:03:24 +02:00
Alexander Mai
173a2e9ea2
#5641 fix crash within CheckClass::initializeVarList()
2014-04-04 22:13:51 +02:00
Daniel Marjamäki
71fda0ea0c
Fixed GCC warning about shadowed variable settings
2014-04-04 07:02:36 +02:00
Daniel Marjamäki
8dcb3bae47
Refactoring checks of overlapping conditions in if and else-if
2014-04-03 19:35:50 +02:00
PKEuS
d4765bccc3
Refactorized inefficient usage of std::string and const char[] (part 2).
2014-04-03 14:56:14 +02:00
Daniel Marjamäki
a6557f8c74
Null pointer: Fixed false positive discovered by Travis when self-checking cppcheck
2014-04-02 19:39:42 +02:00
Daniel Marjamäki
bc9bb17025
Refactor CheckOther::oppositeInnerCondition() using AST and isSameExpression()
2014-04-02 16:54:01 +02:00
PKEuS
e9411e05ba
Refactorized inefficient usage of std::string and const char[].
2014-04-02 13:56:34 +02:00
Daniel Marjamäki
830249d72e
Fixed #5510 (FP: nullPointer - variable initialized in function call)
2014-04-01 07:06:20 +02:00
PKEuS
e0574feabd
Fixed problems with unknown macros for inline class methods in SymbolDatabase ( #5621 )
2014-03-31 21:04:01 +02:00
PKEuS
025850d961
Support unknown THROW()-style macros in symboldatabase; Fixed #5056 .
...
Simplified related code.
2014-03-31 20:33:01 +02:00
Daniel Marjamäki
484483bd5d
AST: fixed ast for 'for (*x=0;y;z)'
2014-03-31 17:16:13 +02:00
Daniel Marjamäki
225fb96554
Fixed #5627 (False positive assignBoolToPointer)
2014-03-31 15:55:54 +02:00
Daniel Marjamäki
963a8b51cc
"automatic conversion from iso-8859-1 formatting to utf-8"
2014-03-31 00:33:43 +00:00
PKEuS
060f9035c9
Fixed crashs on garbage code ( #5604 )
2014-03-30 11:38:01 +02:00
PKEuS
345a80f4d5
Fixed #5621 and slightly simplified symboldatabase code.
2014-03-30 11:06:44 +02:00
Alexander Mai
70885c78e4
Fix endless recursion within CheckClass::isConstMemberFunc() caused by incomplete/missing template declaration
2014-03-30 10:09:57 +02:00
Alexander Mai
bf335217cd
Fix #5605 part 2 - now endless recursion within CheckClass::isMemberFunc()
2014-03-30 08:31:02 +02:00
Daniel Marjamäki
e5301b2b7a
ValueFlow: Improved valueflow of for loop 'for (i=a; i<10; i++)' => unknown start value but end value is known
2014-03-29 20:20:22 +01:00
Daniel Marjamäki
407c9fdf9d
Refactored checkNegativeBitwiseShift() so it uses ast and valueflow
2014-03-29 13:01:30 +01:00
Alexander Mai
d1b1699bb0
Fix #5606 - Endless recursion in CheckClass::isMemberVar(). New function Type::hasCircularDependencies() is supposed to detect loops within the class hierarchy which was causing the problem
2014-03-29 12:21:35 +01:00
Alexander Mai
d6888410ec
Ticket #3322 : Add test cases. The bug got fixed long time ago
2014-03-28 20:09:22 +01:00
PKEuS
a01bfcb62d
Fixed a few cppcheck messages
2014-03-28 18:55:16 +01:00
PKEuS
a16d631813
Further improvements to setVarId and function/array pointer detection in SymbolDatabase ( #2872 )
2014-03-28 17:43:40 +01:00
PKEuS
1c58628223
Handle pointer/reference to array in setVarId ( #2645 )
2014-03-28 16:10:27 +01:00
PKEuS
50a94885ce
Fixed oppositeInnerCondition check:
...
- Resolved false positives #4170 and #4186 , as well as numerous other potential false positives
- Improved message to point to both locations
- Inner condition could also be a while loop; Outer if could also be 'else if'
- Made the check non-experimental again (#3645 )
2014-03-28 14:55:17 +01:00
Matthias Krüger
e1f759b5b8
run dmake
2014-03-28 13:50:02 +01:00
PKEuS
c078b3fced
Added testing of samples/ to testrunner ( #3515 ).
2014-03-28 13:06:38 +01:00
PKEuS
838cac5a3a
Added unit test for #1473 .
2014-03-28 11:34:23 +01:00
PKEuS
3950a62ef2
Added unit test for #2626
2014-03-28 10:06:24 +01:00
PKEuS
63254b33f9
Fixed uncaught exception in testbufferoverrun.cpp
2014-03-27 19:55:11 +01:00
PKEuS
825b8b7c66
Unit test for #3589
2014-03-27 19:16:30 +01:00
PKEuS
a6ca3cf2cf
Throw syntaxError when encounter one in symboldatabase ( fixes #5572 )
2014-03-27 19:06:13 +01:00
PKEuS
efe3f834be
Refactorized handling of syntaxError: Print debug output, removed a few return values that are no longer required
2014-03-27 18:41:52 +01:00
Daniel Marjamäki
581886636d
CheckBool::checkComparisonOfBoolExpressionWithInt: Rewrite the check using AST instead of token list
2014-03-27 16:10:43 +01:00
PKEuS
9b307cf8e0
Improved readability of testsuite output when ASSERT_EQUALS_MSG fails.
...
Fixed another true positive in checkbufferoverrun.cpp
AStyle
2014-03-27 16:06:30 +01:00
PKEuS
7e4081f7f5
Treat syntaxError and cppcheckError as InternalErrors (throw as exception, #4268 )
2014-03-27 13:15:21 +01:00
PKEuS
b23aebf2f0
Show redundantCopyLocalConst for STL types ( #4331 )
2014-03-27 11:15:17 +01:00
PKEuS
379807a8ea
Fixed TODO_ASSERT_EQUAL and #5614 caused by bad simplification of return values.
2014-03-27 11:04:31 +01:00
Daniel Marjamäki
2248cdfea0
CheckBool::checkAssignBoolToPointer: Refactor to use AST.
2014-03-27 05:39:48 +01:00
PKEuS
f71a4ad216
Improved information message on missing headers when included with <> ( #4772 )
2014-03-26 15:22:22 +01:00
PKEuS
6c4e8761c8
Fixed false positive "unused function" #5113 .
2014-03-26 12:34:21 +01:00
PKEuS
1677e2913e
Regression test for #5061 .
2014-03-26 12:17:27 +01:00
PKEuS
848d079c71
Refactorized detection of function usage in CheckUnusedFunction, fixed #5358
2014-03-26 09:12:41 +01:00
PKEuS
02f38772cc
Refactorization: Use SymbolDatabase to find functions in CheckUnusedFunctions
2014-03-26 08:54:56 +01:00
Daniel Marjamäki
6da9cca4ab
fixed unit test that I broke by mistake
2014-03-25 21:45:25 +01:00
Daniel Marjamäki
87daf5783e
buffer overflow: clean up old checking for negative index
2014-03-25 20:37:32 +01:00
Daniel Marjamäki
c8004a8d31
Buffer overruns: Use ValueFlow to detect negative index
2014-03-25 18:22:22 +01:00
PKEuS
9b4b90f6a0
Avoid loading libraries multiple times in test suite
...
-> Massive speedup for test suite (especially on slow systems)
2014-03-24 09:59:05 +01:00
Daniel Marjamäki
aa05bf0f16
ValueFlow: Improved abstract interpretation
2014-03-24 06:48:06 +01:00
Daniel Marjamäki
2a0716449f
Fixed #5498 (C++0x11 default values for class fields and missing constructor)
2014-03-24 06:15:51 +01:00
Daniel Marjamäki
dbc8273cb7
ValueFlow: improved abstract interpretation of for loops
2014-03-24 00:16:02 +01:00
Daniel Marjamäki
c14a3d67bb
ValueFlow: Handle division by zero better in abstract interpretation
2014-03-23 20:37:56 +01:00
PKEuS
1be7bfa7fe
Fixed crash on invalid code ( #5603 )
2014-03-23 20:08:16 +01:00
Daniel Marjamäki
30fa187b30
Fixed #5549 (ValueFlow: Handle static variables better in valueFlowAfterAssign)
2014-03-23 17:57:27 +01:00
PKEuS
5f2067e401
Refactorized dead code elimination:
...
- Use library to get noreturn functions
- Fixed do-while simplification (#4940 )
2014-03-23 10:59:41 +01:00
PKEuS
77c17100ec
Bailout in private function usage checking for operators ( #5059 ).
2014-03-23 10:06:14 +01:00
PKEuS
8d5be8c4a4
Fixed related issues to #5601
2014-03-22 22:35:20 +01:00
PKEuS
58c2f372b9
Fixed false positive when noreturn function is defined ( #5601 , second attempt)
2014-03-22 19:55:13 +01:00
PKEuS
6395cb9b95
Syntax error on invalid enum ( #5600 )
2014-03-22 19:31:01 +01:00
Daniel Marjamäki
b6276058da
Value Flow: Improved abstract interpretation of arithmetical expressions
2014-03-22 19:02:33 +01:00
PKEuS
77c871035b
Fixed false positive when noreturn function is defined ( #5601 )
2014-03-22 18:57:19 +01:00
Daniel Marjamäki
7d2357de8d
Refactoring. Use astIsFloat()
2014-03-22 18:42:29 +01:00
PKEuS
560cf397d3
Fixed C++11 right angle bracket issue #5150
2014-03-22 13:34:15 +01:00
Alexander Mai
6a08c27183
Fix segfault in variableIsUsedInScope() - loop variable not check against NULL
2014-03-22 11:14:11 +01:00
Alexander Mai
e1c565357a
Invalid code cause SIGSEGV since loop variable tok2 was not checked properly
2014-03-22 10:32:24 +01:00
Alexander Mai
37befc75ef
In case of a loop within the class hierarchie Function::isImplicitlyVirtual_rec() was entering an endless loop. Tracking the previously analyzed types shall prevent this.
2014-03-22 08:49:28 +01:00
Martin Ettl
e00f50b850
Fixed #5597 and added abort() support to stdcfg.
2014-03-21 17:36:48 +01:00
PKEuS
49b25b05d9
Fixed crash in CheckBufferOverrun on garbage code ( #5595 )
2014-03-21 13:20:44 +01:00
orbitcowboy
6507824a34
Added support for putchar() to std.cfg.
2014-03-20 05:49:38 +01:00
orbitcowboy
80e3b49cfc
Added support for ftell() and puts() to std.cfg.
2014-03-20 04:10:41 +01:00
Daniel Marjamäki
fc014f055f
ValueFlow: Removed wrong bailout
2014-03-21 08:33:45 +01:00
orbitcowboy
30006cf06f
Added support for fputs() to std.cfg.
2014-03-20 02:13:41 +01:00
Daniel Marjamäki
54e7f34f4a
Fixed #5584 (FP: Division by zero when function not declared)
2014-03-20 16:12:58 +01:00
orbitcowboy
b37e9601c1
Added support for fgetc() to std.cfg.
2014-03-20 00:59:52 +01:00