Daniel Marjamäki
dbcdb19b73
Refactoring; Use range for
2018-04-24 18:02:36 +02:00
Daniel Marjamäki
7ee636b934
Refactoring: Reuse isLikelyStreamRead in isVariableChanged
2018-04-18 17:46:10 +02:00
Daniel Marjamäki
7825eb8670
Refactoring; reuse isLikelyStreamRead
2018-04-17 19:51:27 +02:00
Daniel Marjamäki
c84628c28a
Fixed #8494 (False positive: serialization class overloads operator)
2018-04-17 14:23:04 +02:00
PKEuS
d2146844dd
Refactorizations:
...
- Replace several push_back-calls by emplace_back
- Replace some x = x.substr(0, y) calls by x.erase(y)
2018-04-11 09:44:35 +02:00
Daniel Marjamäki
c5923fbdd3
astyle formatting
2018-04-09 22:21:17 +02:00
Paul Fultz II
d8b3fa5c70
Fix #8482 : Regression with valueflow ( #1159 )
...
* Fix regression with valueflow
* Simplify test case
2018-04-09 16:13:17 +02:00
PKEuS
b15cc3f236
Refactorization: Replace several push_back-sequences by initializer lists
2018-04-09 09:54:39 +02:00
Daniel Marjamäki
ee5c60e8f6
Refactoring, use early continue
2018-04-08 09:30:13 +02:00
Daniel Marjamäki
795b9f5e0f
astyle formatting
2018-04-08 09:25:59 +02:00
Paul Fultz II
aed84abfd5
Extend valueflow comparison ops ( #1153 )
...
* Handle else clause when doing a compare
* Break early
* Fix bug in checking no return else
* Escape quotes
* Add equal sign
* Simplify the logic
2018-04-08 09:24:01 +02:00
Matthias Krüger
5a104cab6e
remove weird "#line 2" from valueflow.cpp
2018-04-06 23:26:08 +02:00
Daniel Marjamäki
3ad6c7ebce
Refactoring, use early continue
2018-04-05 08:21:43 +02:00
Paul Fultz II
b871c85b67
Improve valeflow analysis with comparison operators ( #1131 )
...
* Improve valeflow analysis with comparison operators
* Use simple match
* Dont add 0 on comparisons
* Check reverse comparisons
* Use nullptr
* Remove duplicate code tests
2018-04-05 06:51:31 +02:00
jrp2014
b6504c70ca
Improve constness
2018-04-04 21:51:31 +02:00
IOBYTE
5bc039b7da
Fix #6367 and #8439 (improve sizeof value flow support) ( #1132 )
2018-03-23 08:28:12 +01:00
Daniel Marjamäki
7699f6432b
Fixed #8288 (valueFlowGlobalVar: compound assignments)
2018-03-18 19:53:33 +01:00
Daniel Marjamäki
ec6133aea2
Fixed #8182 (False positive uninitvar - variable initialized in function in ternary expression)
2018-03-16 19:13:48 +01:00
Daniel Marjamäki
1628405869
Fix internal warning
2018-02-24 22:35:37 +01:00
Daniel Marjamäki
7701e4594a
ValueFlowBeforeCondition: Fix wrong value in do-while condition when there is a break in the loop body
2018-02-24 22:07:34 +01:00
Daniel Marjamäki
69b50b274c
Try to make Travis happy
2018-02-11 22:54:14 +01:00
Daniel Marjamäki
e62b9bdc77
Fixed #8348 (ValueFlow: wrong Uninit value with abort() in else-branch)
2018-02-11 22:14:44 +01:00
Matthias Krüger
f009cfc845
fix some typos found by codespell.
2018-02-04 20:53:43 +01:00
Daniel Marjamäki
c4caee6b18
Updated copyright year
2018-01-14 15:37:52 +01:00
Daniel Marjamäki
6fd157e93b
ValueFlow: Template arguments have 'possible' values
2018-01-11 14:22:27 +01:00
PKEuS
c8010fdf42
Fixed crash on garbage code ( #8307 )
2018-01-07 13:11:56 +01:00
Daniel Marjamäki
8fe4852b98
Refactoring, reuse and improve isVariableChangedByFunction()
2017-11-18 11:02:52 +01:00
Daniel Marjamäki
9191e6f112
Fixed #8246 (ValueFlow: known value, function pointer argument)
2017-11-17 23:04:54 +01:00
Daniel Marjamäki
4a9984d73b
Fixed #8233 (FP uninitvar found in bash:lib/readline/display.c)
2017-11-06 10:28:07 +01:00
Ayaz Salikhov
19af9bc216
Fix UB when converting float to int ( #984 )
2017-11-03 14:05:23 +01:00
Daniel Marjamäki
002f6679d5
Fix syntax error
2017-10-21 22:17:07 +02:00
Daniel Marjamäki
c4c76aa1ad
Use MathLib::bigint_bits
2017-10-21 22:08:34 +02:00
Ayaz Salikhov
64e61d28ba
Add an ability to use address sanitizer ( #979 )
2017-10-21 21:04:14 +02:00
Daniel Marjamäki
05e1e5e0a0
astyle formatting
...
[ci skip]
2017-10-20 22:11:12 +02:00
Daniel Marjamäki
1d5e3e4f0c
Fixed #8247 (False positive knownConditionTrueFalse)
2017-10-20 17:31:58 +02:00
Dmitry-Me
5040491ee6
Size computation code not required outside this translation unit
2017-10-19 19:01:41 +03:00
Dmitry-Me
606e28a3c5
Extract and reuse size computation
2017-10-19 00:25:21 +03:00
Dmitry-Me
34a8d2431f
Extract and reuse size computation
2017-10-19 00:20:04 +03:00
Dmitry-Me
8709490903
Clarify expressions with parentheses
2017-10-18 23:40:43 +03:00
Dmitry-Me
e356ccca22
Revert "Clarify expression with parentheses"
...
This reverts commit bbf0a81c2d
.
2017-10-18 23:31:44 +03:00
Dmitry-Me
bbf0a81c2d
Clarify expression with parentheses
2017-10-18 23:24:31 +03:00
Dmitry-Me
151ace2581
Use Platform for char limits computation ( #972 )
2017-10-18 17:30:47 +02:00
Daniel Marjamäki
ad1749738e
Fixed #6153 (ValueFlowBeforeCondition: Handle global variables)
2017-10-17 16:55:37 +02:00
Daniel Marjamäki
6d59290858
Fixed #10 (ValueFlow: condition variable has known value in switch case)
2017-10-16 21:51:30 +02:00
Daniel Marjamäki
fbccb3ae55
Add errorpath for accessMoved message
2017-10-10 15:49:15 +02:00
Daniel Marjamäki
d3c9d06aa4
astyle formatting
...
[ci skip]
2017-10-08 14:16:45 +02:00
Ayaz Salikhov
be2c65eb58
Simplify int vs bool
2017-10-08 07:54:39 +02:00
Daniel Marjamäki
2a6fbe2e3c
astyle formatting
...
[ci skip]
2017-10-05 23:01:42 +02:00
hexcoder
051a18b120
pull request for ticket 8180 (better diagnostic output for bailouts) ( #964 )
...
* sync build instructions from readme.txt
* refactored the patch from ticket 8180. Moved logic from macros to the bailoutInternal function
* adapt to new bailout message format
* adapt to new bailout message format
* adapt to new bailout message format
* compile fix for Microsoft platform
* remove directory part from file locations in bailout message (normalize)
* remove directory part from valueflow message filter
* adapt tests to file format without directory part
* adapt tests to file format without directory part
* new line number agnostic assert_equals methods
* new line number agnostic assert_equals methods
* adapt to new method assertEqualsWithoutLineNumbers()
* adapt to new method assertEqualsWithoutLineNumbers()
* Bugfix: do not replace line number with spaces, remove it
* review changes: const char * -> std::string, size_t -> int, std::to_string() -> MathLib::toString()
* set #line at the beginning to guard against insertions from match compiler
* Bugfix: counting lines can be difficult :-) #line 1 -> #line 2
* added method stripDirectoryPart()
* added method stripDirectoryPart()
* used new method Path::stripDirectoryPart()
* new dependency path.h in lib/valueFlow.cpp
* code cleanup, removing redundant temporary objects and casts
2017-10-05 23:03:13 +02:00
Daniel Marjamäki
ba8222de1c
ValueFlow: Put 'inconclusive' state in the ValueKind. A value can't be both known and inconclusive.
2017-09-20 22:41:36 +02:00
Daniel Marjamäki
87c35cd60e
ValueFlowForward: Refactoring handling of compound assignments
2017-09-20 11:45:28 +02:00
Daniel Marjamäki
1dbcba4dd6
Fixed #8221 (ValueFlow: value for static variable that is not written)
2017-09-15 15:58:19 +02:00
Daniel Marjamäki
ef1f3fbee6
Fixed #8173 (ValueFlow: use AST when setting values in assignment RHS ((n=42) && n=='A'))
2017-09-14 22:49:47 +02:00
Dmitry-Me
a4c20b3606
Break loop early
2017-09-12 07:48:06 +03:00
Dmitry-Me
4126fab1d5
Simplify code with temporary
2017-09-12 07:46:38 +03:00
Dmitry-Me
caebf137bc
Cache and reuse value
2017-09-12 00:21:36 +03:00
Dmitry-Me
5dba8268e7
Better variable name
2017-09-04 17:53:56 +03:00
Daniel Marjamäki
a02fd54a69
ValueFlow: Avoid FPs for aliased variables
2017-09-03 23:24:55 +02:00
Dmitry-Me
beba46987d
Remove redundant variable
2017-09-01 18:19:25 +03:00
Dmitry-Me
2133350bf0
More useful default value
2017-09-01 18:17:40 +03:00
Dmitry-Me
4663dc205a
Cache and reuse value
2017-09-01 18:16:08 +03:00
Daniel Marjamäki
59034e17f1
Refactoring, reuse code to skip lambda functions
2017-08-29 22:35:55 +02:00
Daniel Marjamäki
9c99bc43c2
ValueFlow: Skip wrong handling of lambda functions. TODO: handle lambda functions properly.
2017-08-28 22:39:12 +02:00
Daniel Marjamäki
02a1b7cd2d
Fixed #7965 (valueFlowForward: Improved handling of correlated variables)
2017-08-27 19:50:44 +02:00
Daniel Marjamäki
529b255e99
ValueFlow: Better errorpath for increment/decrement
2017-08-25 23:07:26 +02:00
Daniel Marjamäki
b1b8e5270a
ValueFlow: Better errorpath for increment/decrement
2017-08-25 22:15:52 +02:00
Daniel Marjamäki
50636f75ba
ValueFlow: Improved error path for compound assignments
2017-08-24 22:02:49 +02:00
Daniel Marjamäki
f10634c021
ValueFlow: Dont try to evaluate '/=0;'
2017-08-23 17:53:05 +02:00
Daniel Marjamäki
167cfb1ac5
valueFlowForward: improve handling of compound assignments
2017-08-23 11:13:47 +02:00
Daniel Marjamäki
3abb62a6d1
Fixed #8036 (valueFlowUninit: strcpy(buf, e = str), free(e);)
2017-08-20 19:47:26 +02:00
Dmitry-Me
d3d9c76f01
Fix off by one, resolve C4334
2017-08-14 18:07:36 +03:00
Ayaz Salikhov
b8cd7dbb5c
Use nullptr instead of 0 or NULL ( #936 )
2017-08-09 20:00:26 +02:00
Daniel Marjamäki
32fe0aba41
Fixed #8037 (ValueFlow: global variable might be modified by function call)
2017-07-09 12:50:17 +02:00
Daniel Marjamäki
bce0776417
Fixed #7795 (ValueFlow: Value is not known after conditional increment )
2017-06-01 15:16:07 +02:00
Ayaz Salikhov
28aa939d69
iwyu - include what you use
2017-05-27 04:33:47 +02:00
Daniel Marjamäki
6e1544bd49
ValueFlow: Use getOrdinalText()
2017-05-23 15:01:56 +02:00
orbitcowboy
ba2b235e24
Fixed: warning: ‘tokvalue’ may be used uninitialized in this function [-Wuninitialized].
2017-05-22 15:22:38 +02:00
Daniel Marjamäki
58da0df2f6
astyle formatting
...
[ci skip]
2017-05-20 18:52:48 +02:00
Daniel Marjamäki
82a372a380
Try to clarify ErrorPath texts
2017-05-20 08:47:35 +02:00
Daniel Marjamäki
f92b16706c
ValueFlow: Add ErrorPath info after for loop
2017-05-19 16:32:58 +02:00
Daniel Marjamäki
2bb54fef69
ValueFlow: Test ErrorPath handling
2017-05-19 14:34:59 +02:00
Daniel Marjamäki
cd53d10970
ErrorPath: More information about assignments
2017-05-16 23:12:35 +02:00
Daniel Marjamäki
c617851567
ErrorLogger: Added ErrorPath where each item has token and info
2017-05-16 22:38:13 +02:00
Daniel Marjamäki
e65d6d3c67
ValueFlow: inherit Value::callstack in calculations
2017-05-16 19:43:55 +02:00
Daniel Marjamäki
8d75d1b920
Partial fix for #8028 (ValueFlow: Origin/callstack of value)
2017-05-15 20:05:11 +02:00
Daniel Marjamäki
bc7799dccd
Fixed #7888 (false positive from knownConditionTrueFalse with sizeof(int) == sizeof(long))
2017-05-01 12:23:28 +02:00
Daniel Marjamäki
980ca39fe2
valueFlowForward: better handling of sizeof() in rhs in assignments
2017-04-29 08:25:55 +02:00
Daniel Marjamäki
a0a8f8ddd6
ValueFlowUninit: make it more strict
2017-04-28 13:29:09 +02:00
Daniel Marjamäki
89532cf8b9
Fixed #7968 (valueFlowBeforeCondition: better handling of compound assignments)
2017-04-25 20:45:02 +02:00
Daniel Marjamäki
37fd60e879
Fixed #7293 (Use of uninitialized pointer not detected (worked in 1.71))
2017-04-24 18:27:16 +02:00
Daniel Marjamäki
9a294496c1
ValueFlow::setTokenValue: Fix typo
2017-04-23 21:59:58 +02:00
Daniel Marjamäki
a688402617
ValueFlow::setTokenValue: Don't calculate parent value for uninitialized values
2017-04-23 21:58:01 +02:00
Daniel Marjamäki
8a738eefab
fixed #7998 (uninitialized variable is not found when used with switch/case)
2017-04-23 18:05:14 +02:00
Daniel Marjamäki
8fe7ee1012
Fixed #7886 (ValueFlow: endless forloop 'for (i = 0, j = 0; i < sz && j < 9; i++)')
2017-03-30 22:02:36 +02:00
PKEuS
3c8f5b85ae
Refactorization: Allocate Token::_values (ValueFlow information) dynamically, reducing size of each token by around 10%
2017-03-27 18:48:34 +02:00
PKEuS
97fa9e9d1b
ValueFlow: Stop on inline assembly
2017-03-23 20:01:16 +01:00
Daniel Marjamäki
ecc59859e1
Don't simplify _Bool in TokenList
2017-03-04 11:13:28 +01:00
Daniel Marjamäki
d1c66edb03
ValueFlow: Known values in conditional code
2017-03-03 01:29:34 +01:00
Daniel Marjamäki
47d39d0a14
Revert "Fixed #7888 (1.77 false positive from knownConditionTrueFalse with sizeof(int) == sizeof(long))"
...
This reverts commit a762511067
.
2017-01-10 13:22:48 +01:00
Daniel Marjamäki
a762511067
Fixed #7888 (1.77 false positive from knownConditionTrueFalse with sizeof(int) == sizeof(long))
2017-01-09 22:28:55 +01:00
Daniel Marjamäki
b1f7e46491
Fixed #7323 (valueflow: global variables)
2017-01-09 15:53:08 +01:00
Daniel Marjamäki
f40bdddbab
ValueFlow: Better handling when casting calculation result
2016-12-20 23:09:50 +01:00
Daniel Marjamäki
44ccbdedec
ValueFlow: Improved value for cast
2016-12-20 21:37:25 +01:00
Daniel Marjamäki
606bb78297
ValueFlow: Better handling of casts
2016-12-20 19:32:21 +01:00
Daniel Marjamäki
e14e86c103
ValueFlow: only set values in conditional code in subfunctions when sure
2016-12-20 11:06:20 +01:00
Daniel Marjamäki
807b653739
ValueFlow: Fix FP in for loops when 2nd expression is 0
2016-12-20 07:54:38 +01:00
Daniel Marjamäki
f1ad7368f6
ValueFlow: bool values
2016-12-19 21:21:18 +01:00
Daniel Marjamäki
17aaecbd6b
ValueFlow: Improved handling of sizeof
2016-12-18 14:03:48 +01:00
Daniel Marjamäki
4ac5c78e0c
Fix wrong iterator usage. Iterator that is erased must be non-const.
2016-12-17 22:20:50 +01:00
Daniel Marjamäki
72e4bc9d88
ValueFlow: skip values that cause false assertion condition
2016-12-17 21:23:14 +01:00
Daniel Marjamäki
fd85b493bd
astyle formatting
...
[ci skip]
2016-12-17 18:51:16 +01:00
Frank Zingsheim
cb5a5e6a25
Improve Fix #6180 (Access of moved variable still allowed until function is called)
2016-12-17 16:42:46 +01:00
Frank Zingsheim
9a871d33f7
Improve Fix #6180 ("reset" and "clear" clears the move status)
2016-12-17 16:39:30 +01:00
Frank Zingsheim
f4ab45f13b
Improve Fix #6180 (Do not warn about move if it is part of a reassignment of the variable)
2016-12-17 16:39:30 +01:00
Daniel Marjamäki
31337dda27
ValueFlow: Better handling of && and || in for loop to avoid FP
2016-12-11 21:19:24 +01:00
Frank Zingsheim
e0d4720e19
Fix #7829 (false-positive: knownConditionTrueFalse linked to virtual method)
...
Return values of virtual functions in valueflow are only possible values
since function might be overloaded.
2016-12-11 10:44:05 +01:00
Daniel Marjamäki
b098d5fbd6
ValueFlow: We need better handling of casts
2016-12-10 22:09:01 +01:00
PKEuS
2f6350a0d0
Refactorized Library
2016-12-06 14:09:28 +01:00
PKEuS
6e8ac13325
Refactorization:
...
- Optimized std::string usage
- Replaced list by vector
- Moved iterator into loop head
- Ran AStyle
2016-12-05 17:45:34 +01:00
Daniel Marjamäki
5df8e7f50c
Fixed #7596 (ValueFlow: better handling for 'x*(1-x-1)')
2016-12-04 22:39:59 +01:00
Stefan Weil
57b57428c2
Fix some typos in comments (found by codespell)
...
Signed-off-by: Stefan Weil <sw@weilnetz.de>
2016-11-27 11:40:42 +01:00
Matthias Krüger
213589ee68
ValueFlow: don't perform UB when a function returns shifts of/by negative values. Fixes #7814 .
2016-11-24 23:23:47 +01:00
Daniel Marjamäki
d40f4e4a55
Fixed #7778 (valueFlowAfterAssign: alias)
2016-11-21 17:26:36 +01:00
Frank Zingsheim
c8ff96fe8f
Fixed #6180 (Usage of variable after std::move or std::forward)
2016-11-20 15:14:49 +01:00
Matthias Krüger
b6614d0aa4
valueflow: bail out earlier when encountering divisions by zero. Fixes #7819 .
...
This caused valueflow to actually try to divide by zero, detected by UBSAN.
2016-11-20 14:38:35 +01:00
Daniel Marjamäki
3b57273ef1
Fix Cppcheck warnings
2016-11-14 07:21:10 +01:00
Daniel Marjamäki
1e31c6c01c
ValueFlow: Extended handling of float values
2016-11-14 06:42:52 +01:00
Daniel Marjamäki
e1e9eacccc
ValueFlow: Added float type
2016-11-13 22:59:56 +01:00
Daniel Marjamäki
4732667488
ValueFlow: allow more value types
2016-11-13 22:33:39 +01:00
Daniel Marjamäki
7ebfb10edd
Fixed #7806 (ValueFlow: better handling of subfunction with early return)
2016-11-13 18:19:51 +01:00
Daniel Marjamäki
ac7b351d1e
ValueFlow: Don't calculate x<<64 and x>>64
2016-11-06 20:40:58 +01:00
Daniel Marjamäki
dd69d5eabe
ValueFlow: Don't calculate result when there is UB
2016-11-06 17:42:01 +01:00
Alexander Mai
ee11f0974a
#7769 segmentation fault at setTokenValue() on invalid code.
2016-11-06 14:20:58 +01:00
Daniel Marjamäki
ece4b1a06f
Fix ValueFlow
2016-11-05 09:59:48 +01:00
Daniel Marjamäki
2885a75ea6
ValueFlow: handle ~ in setTokenValue
2016-11-05 09:29:22 +01:00
Frank Zingsheim
d4f01583b6
Fixed TODO (check if function parameter is non-const reference etc..) by common function
2016-11-01 14:06:30 +01:00
Robert Reif
4216b26b8c
Fixed #7775 (crash at valueFlowSetConstantValue)
2016-10-26 10:36:02 +02:00
Daniel Marjamäki
8a0f3009ff
ValueFlow: inner and outer function return values
2016-10-22 17:22:57 +02:00
Daniel Marjamäki
77cd6c194f
ValueFlow: Set 'known' property for function return values
2016-10-22 12:24:15 +02:00
Daniel Marjamäki
86a620a3b4
ValueFlow: Better handling of function return value when there are 0 parameters
2016-10-20 16:10:55 +02:00
Daniel Marjamäki
efa3aba32a
Remove Tokenizer::simplifyNull()
2016-10-18 21:44:02 +02:00
Daniel Marjamäki
fae4a4dacf
Fixed #7668 (ValueFlow: return value from abs)
2016-10-17 13:05:19 +02:00
Daniel Marjamäki
7fb812f415
Fixed #7752 (ValueFlow: no conditional value, probably because condition is in ternary operator and/or in function call.)
2016-10-16 07:15:28 +02:00
Daniel Marjamäki
ad74421526
Fixed #7756 (ValueFlow: fix bug in valueAfterAssign, same variable in lhs and rhs)
2016-10-15 19:09:50 +02:00
Boris Egorov
a32f61ae4a
Fixed #7139 (ValueFlow: Missed shift operation in for expression)
2016-10-04 13:09:33 +07:00
Daniel Marjamäki
254e5675ff
Fixed #7573 (Tokenizer: FP caused by constant folding)
2016-08-28 19:11:05 +02:00
PKEuS
e0838ff194
Fixed crash on garbage code ( #7699 )
2016-08-21 11:06:48 +02:00
Daniel Marjamäki
305609f4fb
Fixed #7688 (setTokenValue: crash when there is no 2nd operand for ternary operator)
2016-08-17 18:44:41 +02:00
Daniel Marjamäki
1f98af654a
ValueFlow: better handling of ? when condition result is known
2016-08-15 14:19:35 +02:00
Daniel Marjamäki
62362cd06d
ValueFlow: improve handling of unary minus
2016-08-14 22:19:06 +02:00
PKEuS
9a6569fde1
Always set ErrorMessage::file0 to ensure that the source file that cppcheck is checking when an error occurs can be identified
...
Removed unused function and unused includes from preprocessor.h/cpp
2016-07-26 16:28:40 +02:00
Daniel Marjamäki
4f051bf9dd
Fixed #7599 (valueFlowAST: handle && and || better)
2016-07-17 21:51:20 +02:00
Robert Reif
eca805ba3b
ValueFlow: Fixed constant folding of sizeof(enum) and sizeof(enumerator) ( #7564 )
2016-07-08 20:39:34 +02:00
Robert Reif
66cacde3db
Fixed #7513 (value flow of array dimension with enum doesn't always work)
2016-05-26 11:25:50 +02:00
Daniel Marjamäki
636e97c272
ValueType: Improved debug output for nested types
2016-05-08 13:15:20 +02:00
Daniel Marjamäki
b94eaeca6a
ValueFlow: For convenience, return constant folded value
2016-05-08 11:17:10 +02:00
Daniel Marjamäki
b26dd1ccab
ValueFlow: Handle enums
2016-05-07 20:18:07 +02:00
PKEuS
23202d9442
Fixed bailoutFunctionPar() for temlate functions ( #7396 )
2016-05-04 11:38:29 +02:00
Dmitry-Me
12a5f2509b
These conditions are mutually exclusive
2016-03-03 18:01:15 +03:00
Dmitry-Me
3bcd0e0535
Reduce variable lifetime
2016-03-02 19:07:20 +03:00
Daniel Marjamäki
1ab5805d98
Fixed #6616 (valueFlowForward: for loop, variable in 3rd expression is changed in loop body)
2016-02-08 10:43:41 +01:00
Alexander Mai
cfe9c01bf8
#7257 segmentation fault in valueFlowSwitchVariable (invalid code). Correct SymbolDatabase::validateVariables() so it does not complain about function arguments for function without body
2016-02-03 21:52:02 +01:00
Daniel Marjamäki
d5884692df
Fixed #7363 (valueflowOppositeCondition - if (size1 > size2) ... else if (size1 < size2) ...)
2016-01-30 22:13:03 +01:00
Matthias Krüger
11be3a9265
fix internal warning: [lib/valueflow.cpp:722]: (warning) Found simple pattern inside Token::Match() call: "if ("
2016-01-30 20:34:33 +01:00
Daniel Marjamäki
30f2bb7796
ValueFlow: set known value for opposite condition in else if ( #5503 )
2016-01-30 20:03:55 +01:00
Daniel Marjamäki
b5986f6ad2
Fixed #7358 (valueflow: value is not known after conditional assignment)
2016-01-27 19:20:00 +01:00
Daniel Marjamäki
462b98afbc
Fixed #7310 (ValueFlow: Value of NULL in function call)
2016-01-26 16:53:01 +01:00
Daniel Marjamäki
5c9be4a0df
Fixed #7216 (ValueFlow: known value in condition)
2016-01-26 16:10:15 +01:00
Daniel Marjamäki
a391bca060
Fixed #7350 (ValueFlow: Result of 'x & 0' is always 0)
2016-01-26 10:07:42 +01:00
Daniel Marjamäki
a8416bfb16
Fixed #6000 (ValueFlow: conditional code in for loops)
2016-01-24 13:11:51 +01:00
Daniel Marjamäki
76cdfbf487
Fixed #6330 (valueflow: condition is always false first iteration in dowhile loop)
2016-01-24 08:57:57 +01:00
Daniel Marjamäki
522de81cc7
Refactoring: Move isReturn() to astutils and rename it to isReturnScope()
2016-01-16 18:52:34 +01:00
Lauri Nurmi
996c9244d8
Update copyright year to 2007-2016.
2016-01-01 15:34:45 +02:00
Alexander Mai
e9635fd393
#7236 segmentation fault (invalid code) in ValueFlow::setValues. #7237 segmentation fault (invalid code) in Tokenizer::setVarIdClassDeclaration
2015-12-26 23:51:10 +01:00
Daniel Marjamäki
9cb8e9a07e
Revert "Fixed #3923 (valueFlowForward: assignment in if should not cause bailout for code in else)"
...
This reverts commit 04f9b71281
.
2015-12-12 16:50:02 +01:00
Daniel Marjamäki
04f9b71281
Fixed #3923 (valueFlowForward: assignment in if should not cause bailout for code in else)
2015-12-12 15:50:33 +01:00
Alexander Mai
ba0859e838
#6981 crash in checkvaarg.cpp (with possible fix). Avoid segfault. Add SymbolDatabase::validate() to allow validating smyboldatabase
2015-12-05 20:55:26 +01:00
Daniel Marjamäki
508b06abaa
Fixed #6973 (ValueFlow: dont set possible tokvalues in unreachable code)
2015-12-01 07:49:19 +01:00
Daniel Marjamäki
8fb6f33aca
ValueFlow: dont set dynamic values in unreachable code ( #6973 )
2015-11-30 16:15:58 +01:00
Alexander Mai
c70b71e353
#5888 fsanitize=undefined: signed integer overflow: 4611686018427387904 * 2 cannot be represented in type 'long long int' in valueflow.cpp
2015-11-27 21:45:08 +01:00
Daniel Marjamäki
0022ce8075
Refactor handling of char constants
2015-11-20 10:10:38 +01:00
Daniel Marjamäki
0f9d90d2be
Changed Copyrights. Removed my name.
2015-11-18 20:04:50 +01:00
Daniel Marjamäki
04ecbba361
Fixed #7135 (ValueFlow: Wrong pointer alias set for 'p = &p[x];')
2015-11-15 23:38:23 +01:00
Daniel Marjamäki
595f1e1a27
ValueFlow: set value for char literals
2015-11-12 16:38:58 +01:00
Daniel Marjamäki
34dbc3c00c
ValueFlow: Improved handling of a[i]
2015-11-12 16:14:27 +01:00
Daniel Marjamäki
b9b0964dab
Fixed #7006 (False positive Mismatching assignment and comparison (variable is changed in loop))
2015-11-11 13:45:28 +01:00
PKEuS
389d30fe44
Fixed crash on garbage code ( #7118 )
2015-11-09 11:21:07 +01:00
Daniel Marjamäki
37dbebb093
Fixed #7049 (valueflow: value is not known after case)
2015-11-08 14:08:47 +01:00
Daniel Marjamäki
f7a7a8a95c
Fixed #6934 (False positive returnLocalVariable - assigning local array to function argument)
2015-11-07 15:07:26 +01:00
Aleksandr Pikalev
2d0ecc08c1
Check pointers for NULL before utilizing and do not check it later
2015-11-06 20:24:09 +01:00
Daniel Marjamäki
4b0625c570
Fixed #6239 (Possible null pointer dereference after pointer is modified by a function template)
2015-10-27 12:33:46 +01:00
Daniel Marjamäki
6b9088de3f
Fixed #7057 (valueFlowAfterAssign doesn't terminate)
2015-10-19 19:36:46 +02:00
Alexander Mai
8e3e981323
#7050 segmentation fault (invalid code) in isVariableChanged
2015-10-15 21:27:55 +02:00
Daniel Marjamäki
60f8982999
Fixed #7039 (ValueFlow: bitand calculation '16&15')
2015-10-14 10:44:04 +02:00
Frank Zingsheim
3bc21b8138
Fixed #6996 (ValueFlow: known and possible values)
2015-10-04 10:33:43 +02:00
Daniel Marjamäki
bd243a4748
Fixed #6903 (ValueFlow: Fix FP in ?:)
2015-09-27 13:29:28 +02:00
Dmitry-Me
85d47e25e4
Move variable declaration to where it's first used
2015-09-16 13:15:07 +03:00
Daniel Marjamäki
8cee96a179
ValueFlow: Refactor 'ProgramMemory' so it can handle token * values also and not just int values. I believe this refactoring is needed before #6973 can be fixed.
2015-09-12 19:49:02 +02:00
Dmitry-Me
70d98c7176
Get rid of set object
2015-09-10 17:59:20 +03:00
amai2012
45bb7d5adb
Merge pull request #647 from Dmitry-Me/continueOnRuleMatch
...
Treat matches as mutually exclusive
2015-08-28 16:00:53 +02:00
Dmitry-Me
962f0ee584
Treat matches as mutually exclusive
2015-08-28 15:27:56 +03:00
Dmitry-Me
81613d958a
Replace match call with explicit comparison
2015-08-28 15:16:10 +03:00
PKEuS
4d80df2f4a
Added pointer to Type to Token (similar to Token::Variable() and Token::function()):
...
- Accessible via Token::type()
- Renamed former Token::type() to Token::tokType()
- Removed SymbolDatabase::isClassOrStruct()
2015-08-15 11:19:21 +02:00
Dmitry-Me
f0aa9e31de
Cache and reuse value
2015-08-12 10:57:36 +03:00
Dmitry-Me
50fb9cea66
Reduce variables scope
2015-08-11 17:20:30 +03:00
Daniel Marjamäki
2e78d21480
Fixed #6730 (ValueFlow: inner scope does not return (continue,throw))
2015-08-11 11:21:03 +02:00
Daniel Marjamäki
07a064aab0
Fixed #6910 (ValueFlow: variable incremented as macro argument is not known)
2015-08-05 14:08:57 +02:00
Daniel Marjamäki
8d3f7e36e9
Fixed #6911 (valueflow: comparison of string and NULL)
2015-08-02 18:12:03 +02:00
Daniel Marjamäki
6790d91fbb
Improve error messages for conditional values. make valueFlowSwitchVariable values conditional that depend on the case. Partial fix for #6884 .
2015-07-29 19:54:57 +02:00
Daniel Marjamäki
fc25ed8c86
Fixed #6879 (valueflow in do-while(++i))
2015-07-29 11:55:07 +02:00
Daniel Marjamäki
bf75ee9aed
Fixed #6885 (valueflow ignores assignment of variable via function call)
2015-07-29 10:49:17 +02:00
Daniel Marjamäki
a1dfd6cf73
astyle formatting
2015-07-28 12:47:08 +02:00
Daniel Marjamäki
e759710198
Fixed #6743 (valueFlowAfterCondition: wrong value when variable is changed in conditional code)
2015-07-28 08:58:05 +02:00
Daniel Marjamäki
f449e91d43
made valueFlowSwitchVariable faster when there are many 'case %num%:'
2015-07-27 14:57:02 +02:00
Daniel Marjamäki
5cc744b941
Fixed #6872 (Major performance regression - valueFlowSwitchVariable)
2015-07-27 06:45:06 +02:00
Daniel Marjamäki
ed1c6e41d9
Fixed #6876 (valueFlowForward: lambda function)
2015-07-26 19:28:42 +02:00
Daniel Marjamäki
190550f9f9
Fixed #6877 (ValueFlow: valueFlowForward, after goto label the value is not known)
2015-07-26 17:05:21 +02:00
Daniel Marjamäki
4e293d47c5
CheckMemoryLeak: Fix handling of comparisons after simplifyIfNotNull is removed, detected problem with run_more_tests
2015-07-26 11:27:52 +02:00
Daniel Marjamäki
afd9f071c0
simplified the code for ValueFlow Known/Possible values
2015-07-25 19:36:29 +02:00
PKEuS
ab1113fb16
Fixed crash on garbage code #6859
2015-07-22 13:33:24 +02:00
Daniel Marjamäki
ffc707246b
ValueFlow: Better handling of Known/Possible values after conditional unknown function call
2015-07-21 17:56:40 +02:00
Daniel Marjamäki
749bb34deb
Fixed #6830 (ValueFlow: value of switch-variable inside switch)
2015-07-20 19:45:38 +02:00
Daniel Marjamäki
c0880c8d79
ValueFlow: Values that are assigned in switch are possible after switch
2015-07-20 09:36:56 +02:00
Daniel Marjamäki
ce7e879460
ValueFlow: isVariableChanged() should return true when variable is changed by passing its address to subfunction
2015-07-18 15:35:39 +02:00
Daniel Marjamäki
5aa0b284dc
ValueFlow: Evaluate more calculations when operands have known values
2015-07-18 15:03:57 +02:00
Daniel Marjamäki
25d9ebedd8
ValueFlow: fixed known/possible value of static variable
2015-07-17 20:48:37 +02:00
Daniel Marjamäki
f1e410a878
ValueFlow: value that is changed in do while loop must be possible instead of known.
2015-07-17 20:30:34 +02:00
Daniel Marjamäki
69c1a7ecb1
ValueFlow: default argument values are not known, they are possible
2015-07-17 16:05:07 +02:00
Daniel Marjamäki
577ab1c2ac
ValueFlow: result of ? is not 'known'
2015-07-17 15:22:24 +02:00
Daniel Marjamäki
61cf224f32
ValueFlow: Make known loop value possible
2015-07-17 10:24:24 +02:00
Daniel Marjamäki
9bdee7fce9
ValueFlow: Refactoring setTokenValue()
2015-07-17 09:46:31 +02:00
Daniel Marjamäki
3d5781743c
ValueFlow: Restore handling of not
2015-07-16 21:17:44 +02:00
Daniel Marjamäki
15a8e4d2df
Temporarily revert "Fixed #4842 (condition is always true (variable is assigned constant value and then used in condition))"
...
This reverts commit a3fbad50cb
.
The ValueFlow must be updated before this can be re-added.
2015-07-16 21:10:46 +02:00
Daniel Marjamäki
09efe140fe
ValueFlow: Change value to 'Possible' after conditional assignment in inner loop
2015-07-16 21:08:32 +02:00
Daniel Marjamäki
38214b6907
ValueFlow: function arguments only has 'possible' values
2015-07-16 20:49:14 +02:00
Daniel Marjamäki
a3fbad50cb
Fixed #4842 (condition is always true (variable is assigned constant value and then used in condition))
2015-07-16 20:17:57 +02:00
Daniel Marjamäki
88491267d6
ValueFlow: Added Value::valueKind that says if value is known or possible
2015-07-16 17:33:16 +02:00
Alexander Mai
b604d63dd8
#6726 cppcheck hangs with 100% CPU load (invalidcode) inside Token::astOperand2(). #6840 egmentation fault (invalid code) in Token::astOperand2. Improve stability on invalid code
2015-07-15 15:19:48 +02:00
Daniel Marjamäki
405a1fba11
ValueFlow: set values for false/true
2015-07-14 18:02:26 +02:00
Daniel Marjamäki
7ccd30362c
Fixed #6826 (False positive: ValueFlow conditional value used in condition)
2015-07-12 19:35:47 +02:00
Daniel Marjamäki
f3b4c1d0db
Remove some useless casts, probably added to avoid false positives.
2015-07-04 13:19:21 +02:00
Daniel Marjamäki
b8e77c8005
valueflow: fix for ?:. the condition result is not a result of the ?.
2015-07-04 11:17:38 +02:00
Daniel Marjamäki
7e1ddea653
One more fix for #6811 (ValueFlow: result of ?:)
2015-07-02 20:52:04 +02:00
Daniel Marjamäki
c751039612
Fixed #6811 (ValueFlow: result of ?:)
2015-07-02 20:11:27 +02:00
Daniel Marjamäki
75b0430ba5
Token::strValue: fixed handling of backslash
2015-06-07 11:25:33 +02:00
Simon Martin
98e6dca4f2
Ticket #6713 : Properly detect ternary operator in valueFlowForward.
2015-05-30 20:55:36 +02:00
amai2012
729b240d9c
Refactoring (compiler warnings and a typo)
2015-05-25 23:15:59 +02:00
Daniel Marjamäki
eb0db322eb
Fixed #6560 (ValueFlow: handling ternary operator better in valueFlowSubFunction)
2015-05-24 17:02:00 +02:00
PKEuS
3ce4e68ca6
Refactorization: Make use of do-loops to avoid redundant Token::Match() calls
2015-05-13 13:40:40 +02:00
Daniel Marjamäki
ca1f19b6d4
Fixed #6378 (valueFlowForward: decrement not handled)
2015-05-02 17:30:09 +02:00
Dmitry-Me
8a4033e13a
Omit unneeded actions
2015-03-24 16:01:59 +03:00
Jakub Melka
b7d92a4fc7
Fixed warnings of CppCheck's own code (caused by new check #695 )
2015-03-08 18:18:09 +01:00
Daniel Marjamäki
d1892786b8
ValueFlow: Improved when using '[' on arrays and strings
2015-02-24 15:57:39 +01:00
Dmitry-Me
dfd19233e9
Simplify loop logic
2015-02-09 14:40:17 +03:00
Dmitry-Me
6eacb4957c
Simplify ternary operators, use else-if to avoid extra comparison
2015-02-09 11:46:27 +03:00
Dmitry-Me
fd0155cacf
Reuse already known values
2015-02-09 10:23:36 +03:00
Daniel Marjamäki
8a1b8df1ba
ValueFlow: Improved handling of alias values in valueFlowForward
2015-02-08 19:20:05 +01:00
Daniel Marjamäki
1d873de67f
Fix testrunner
2015-02-07 19:44:33 +01:00
Daniel Marjamäki
62a5d88eb0
ValueFlow: Improved handling of strings
2015-02-07 18:14:22 +01:00
Matthias Krüger
dd70b6e0cd
fix internal message: [lib/valueflow.cpp:239]: (warning) Found simple pattern inside Token::Match() call: "} ;"
2015-02-07 12:51:17 +01:00
Daniel Marjamäki
29db3eb848
Fixed #5980 (ValueFlow: pointer cant be 0 below throw in switch)
2015-02-07 10:45:30 +01:00
PKEuS
f1714110d0
Fixed crash if double constants are passed as default arguments ( #6494 )
2015-02-03 22:12:05 +01:00
Dmitry-Me
c05e632baf
Cache and reuse value
2015-02-03 11:00:40 +03:00
PKEuS
451a277b18
Refactorization: Support function default values in ValueFlow, removed now obsolete CheckNullPointer::nullPointerDefaultArgument().
...
-> Use valueFlowForward() to parse values passed to functions
-> valueFlowForward(): Set value in first occurrence of a variable in a condition
2015-02-01 15:15:00 +01:00
PKEuS
b74b94b1e6
Partially reverted previous commit - std::vetcor instance creation can't be avoided without generating lots of debug messages
2015-02-01 12:33:53 +01:00
PKEuS
58c3fdd063
Fixed crash on garbage code introduced recently, optimized code in valueFlowFunctionReturn.
2015-02-01 12:26:46 +01:00
PKEuS
a4cc4c3e3f
Refactorization: Use SymbolDatabase scope information in ValueFlow
2015-02-01 12:10:20 +01:00
PKEuS
b2835051df
Refactorization: Renamed Token::Match pattern %var% to %name%, implement new pattern %var% which is true if varId > 0.
2015-01-31 12:32:04 +01:00
PKEuS
33f5d27b53
Fixed varId0 message #6443 .
2015-01-31 10:33:32 +01:00
Daniel Marjamäki
6a8293a8b7
Library: More strict matching of functions
2015-01-08 19:31:41 +01:00
Daniel Marjamäki
1068e095e7
Fixed cppcheck warning about iterator post increment
2015-01-06 15:16:29 +01:00
Daniel Marjamäki
eee9183406
ValueFlow: improved handling of conditional noreturn scope in valueFlowForward
2015-01-06 14:12:35 +01:00
Daniel Marjamäki
1f698ca493
ValueFlow: Fixed valueFlowForward, when condition is false and else-block returns dont set values below the else-code
2015-01-05 16:39:47 +01:00
Daniel Marjamäki
c5467766e2
ValueFlow: Fix for valueflow analysis after for loop
2015-01-05 14:00:12 +01:00
Daniel Marjamäki
ff11ba9847
Updated copyright year to 2015
2015-01-03 12:14:58 +01:00
Daniel Marjamäki
2831bbd420
ValueFlow: better handling of goto to avoid false positives
2015-01-01 14:29:49 +01:00
PKEuS
58f4660c94
Fixed #5223 : Bailout in valueFlowForLoop1() for complex conditions
...
Refactorization: Reuse result instead of calling MathLib::toLongNumber() twice
2014-12-30 19:56:47 +01:00
PKEuS
ec826a0e0e
Fixed #6022 : Support ++%var% in valueFlowForLoop1
...
Fixed TODO unit test: properly handle loops that are never executed
2014-12-30 18:50:22 +01:00
Daniel Marjamäki
5490fad8c7
Fixed #5840 (False positive (inconclusive): Possible nullpointer dereference - use before for-loop over nested list)
2014-12-14 14:10:42 +01:00
Daniel Marjamäki
d8b50e73df
Fixed #6002 (Defect: False positive due to pointer address not being associated with variable in for loop)
2014-10-20 15:54:02 +02:00
Daniel Marjamäki
0fd6586fcc
Fixed #6219 (valueFlowForward: better multivariable analysis needed to avoid FP)
2014-10-17 06:50:33 +02:00
Daniel Marjamäki
228206f556
Fixed #6067 (ValueFlow: subfunction, condition with && or ||)
2014-10-15 16:34:03 +02:00
Daniel Marjamäki
31d8cac8c9
Fixed #6138 (ValueFlow: entry can't be 0 in loop code 'while (entry = get()) entry->value;')
2014-10-11 17:48:51 +02:00
PKEuS
0cc5b67bf6
Avoid copying std::list object in valueFlowAfterAssign
2014-09-24 13:22:22 +02:00
Daniel Marjamäki
ee93d30d94
ValueFlow: improved valueflow for loops that assign variable and then break
2014-09-23 16:06:02 +02:00
Dmitry-Me
6f9730b1d8
Reorder checks, unwrap code
2014-09-16 10:17:06 +04:00
Daniel Marjamäki
29a49d0641
removed some redundant null pointer checks before calling Token::Match
2014-09-14 11:35:04 +02:00
Simon Martin
53b58f0ed9
Refactoring. Use Token::Match instead of hardcoded patterns to increase readability.
2014-09-14 11:26:16 +02:00
Alexander Mai
6b26b6ed31
Fix read access to uninitialized variable
2014-09-06 22:27:13 +02:00
Alexander Mai
5a96413220
#6127 crash on patch(?)-".c" file. Avoid segfault.
2014-09-04 21:28:18 +02:00
Daniel Marjamäki
b3e4abd82a
Fixed Cppcheck warnings
2014-09-04 18:08:56 +02:00
Daniel Marjamäki
05617d7285
Fixed #6118 (False positive: divide by zero - if condition not evaluated properly)
2014-09-04 17:52:14 +02:00
PKEuS
5d0aa15002
Merge pull request #416 from Dmitry-Me/removeDuplicateChecks
...
Remove duplicate checks
2014-09-04 07:46:45 +02:00
Alexander Mai
270f59e76a
Fix doxygen warning and astyle formatting
2014-09-03 20:38:41 +02:00
Dmitry-Me
68d650e9ac
Remove duplicate checks
2014-09-03 14:17:34 +04:00
Alexander Mai
a632f68345
#6122 segmentation fault (invalid code) in in valueFlowForLoop2. Simple fix and testcase.
2014-09-02 19:41:50 +02:00
PKEuS
78932094c8
Fixed crash on garbage code #6106
2014-08-31 12:12:03 +02:00
Daniel Marjamäki
eeeb8aa0a7
ValueFlow: Fix crash for lambda function
2014-08-27 17:27:34 +02:00
Daniel Marjamäki
ae8a20b197
Fixed #6086 (False positive: valueFlow, conditional code returns)
2014-08-27 16:59:18 +02:00
Daniel Marjamäki
23ec9fea8e
Fixed #6024 (False positive (nullPointer) using in 1.66)
2014-08-26 18:48:11 +02:00
PKEuS
5e2ea8b6cd
Fixed crash #6089 by using information stored in Variable instead of accessing Variable::nameToken
2014-08-26 11:08:21 +02:00
Daniel Marjamäki
789b01aad2
ValueFlow: fixed one more hang in valueFlowForward
2014-08-24 08:50:01 +02:00
PKEuS
69b7f91034
Support :: in some more places
2014-08-19 11:36:32 +02:00
Daniel Marjamäki
b2288e5ada
Fixed #6022 (Defect: False positive due to bug in determining bounds of for loop 'for (i = 2; i < 1; ++i)')
2014-08-18 16:45:22 +02:00
PKEuS
df080ab5c3
Refactorization in valueflow.cpp: Removed redundant loop, rearranged code.
2014-08-18 10:25:30 +02:00
Daniel Marjamäki
5cdbe0f42d
ValueFlow: Improved value flow after for loop
2014-08-17 10:40:22 +02:00
Daniel Marjamäki
7ca742c454
Fixed #5062 (ValueFlow: Handle comma operator in abstract interpretation)
2014-08-17 06:42:16 +02:00
Daniel Marjamäki
65f10edcb6
Fixed #5866 (False negative: useless condition or null pointer dereference (null object after while loop, method))
2014-08-16 18:32:25 +02:00
Daniel Marjamäki
e83f08a825
Fixed #6044 (hang: darkplaces / cl_particles.c)
2014-08-14 06:13:42 +02:00
Daniel Marjamäki
f0cb6ef33d
Change fix for hang so there won't be FP
2014-08-13 05:36:17 +02:00
Daniel Marjamäki
bdfe43d82c
Fix hang in libdmtx package. found through daca2.
2014-08-13 04:03:17 +02:00
Daniel Marjamäki
970fda9e79
ValueFlow: Fixed nullpointer FP warning in checksizeof
2014-08-11 16:21:20 +02:00
Daniel Marjamäki
8bbbb54f94
Refactoring valueFlowSubFunction
2014-08-06 06:33:06 +02:00
Daniel Marjamäki
9eb28cb8af
ValueFlow: Improved analysis of assignments
2014-08-05 08:28:46 +02:00
Daniel Marjamäki
a2f776b1b7
Dead pointer: Added checking for dead pointer usage when pointer alias local variable that has gone out of scope.
2014-08-05 06:24:23 +02:00
Daniel Marjamäki
d35ce5f0db
ValueFlow: Better handling of calculated function arguments in valueFlowSubFunction
2014-08-04 12:31:04 +02:00
Daniel Marjamäki
344016f7ab
ValueFlow: Handle string values in valueFlowSubFunction
2014-08-04 12:13:15 +02:00
Daniel Marjamäki
79fc549de0
ValueFlow: start adding valueflow handling of strings and pointer aliases
2014-08-03 20:11:22 +02:00
Daniel Marjamäki
f908959196
ValueFlow: improved analysis in for loops to avoid fp
2014-08-01 16:12:57 +02:00
Daniel Marjamäki
688b798b88
ValueFlow: Cleanup variable
2014-08-01 08:59:07 +02:00
Daniel Marjamäki
57c2e928d1
ValueFlow: Simple multivariable control flow analysis to avoid FP when 'control variable' is used
2014-08-01 07:35:15 +02:00
Daniel Marjamäki
25846cf223
ValueFlow: Fix for if/else valueflow analysis
2014-07-30 18:12:33 +02:00
Daniel Marjamäki
15bb447fdc
Fixed #5965 (False positive zerodiv - loop iterating over double variable)
2014-07-17 08:44:55 +02:00
Daniel Marjamäki
5bdd197b01
Fixed #5981 (FP: nullPointer on repeated switch)
2014-07-16 09:12:56 +02:00
Daniel Marjamäki
c531749d7a
ValueFlow: Small cleanups
2014-07-15 10:36:13 +02:00
Daniel Marjamäki
6afe9a4fbe
astyle formatting
...
[ci skip]
2014-07-08 06:44:57 +02:00
amai2012
9b38ae73c1
Attempt to fix 2 Coverity messages.
...
Replace a few unsigned int by std::size_t
2014-07-07 21:25:30 +02:00
Daniel Marjamäki
987ce5a408
Fixed #5968 (False positive: 'Possible null pointer dereference' when checking null in negated conjuction)
2014-07-07 17:48:58 +02:00
Daniel Marjamäki
26a3bdfe00
ValueFlow: Cleanup code by using SymbolDatabase provided scope info
2014-07-07 16:34:21 +02:00
Daniel Marjamäki
b7d7633b97
ValueFlow: Improved analysis after switch
2014-06-30 17:56:42 +02:00
Daniel Marjamäki
f1762f9ed6
Fixed #5939 (fp: Possible null pointer dereference, after check against NULL in for loop)
2014-06-30 07:26:48 +02:00
Daniel Marjamäki
df799f97c5
valueFlowBefore: better analysis of conditional assignment
2014-06-30 00:02:49 +02:00
Daniel Marjamäki
4f43e4f9aa
Fixed #5959 (ValueFlow: return value from subfunction)
2014-06-29 18:04:38 +02:00
Daniel Marjamäki
893996d182
Fixed #5937 (ValueFlow: wrong analysis of calculations with different variable operands)
2014-06-29 10:57:39 +02:00
Daniel Marjamäki
9eaadc81e2
Fixed #5861 (valueFlowSubFunction: fp for float value)
2014-06-28 12:04:20 +02:00
Daniel Marjamäki
5af96c2dd8
Fixed #5947 (valueFlowForward: forward conditions not handled properly)
2014-06-25 16:00:56 +02:00
Daniel Marjamäki
c77786a745
valueFlowAfterCondition: wrong analysis for floats
2014-06-25 06:17:44 +02:00
Daniel Marjamäki
54aede9086
Fixed #5941 (ValueFlow: Wrong value in subfunction under ?)
2014-06-24 19:30:46 +02:00
Daniel Marjamäki
ae81b09b58
Refactoring: Move isScopeNoReturn implementation to library and reuse it both in ValueFlow and Tokenizer
2014-06-22 19:13:15 +02:00
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
Daniel Marjamäki
dec251ac44
ValueFlow: Refactoring. Use utility function isVariableChanged.
2014-06-19 05:41:19 +02:00
Daniel Marjamäki
84581817f6
ValueFlow: Improved valueFlowForward. RHS in assignment.
2014-06-18 21:07:01 +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
Daniel Marjamäki
847bb44bdd
ValueFlow: Improved analysis after condition when ! operator is used
2014-06-16 16:39:41 +02:00
Daniel Marjamäki
a27ca11b85
Fixed #5916 (ValueFlow: Add a valueFlowAfterCondition() function)
2014-06-15 16:47:01 +02:00
Daniel Marjamäki
ad879320e5
ValueFlow: Fixed 'function call => calculation' value flow
2014-06-13 16:34:57 +02:00
PKEuS
adf38fcfd0
Further include cleanup
2014-05-24 12:50:04 +02:00
Matthias Krüger
879023b6b2
travis: compile one pair of jobs with -DCHECK_INTERNAL and run --enable=internal,...
...
suppress warnings in testtoken.cpp
fix warnings in valueflow
2014-05-19 21:44:00 +02:00
PKEuS
09e03fa6ef
Fixed some complaints of PVS Studio
2014-05-19 14:37:54 +02:00
PKEuS
5fbd58d98d
Fixed messages of CheckInternal, fixed a false positive.
2014-05-18 20:39:52 +02:00
PKEuS
70dfb55f21
Simplified some Token::Match patterns
2014-05-11 17:50:58 +02:00
Daniel Marjamäki
5a23b739da
ValueFlow: Improved bailout when variable is reassigned
2014-05-03 12:49:07 +02:00
Daniel Marjamäki
fadc27092e
Fixed #5752 (FP (error) Possible null pointer dereference)
2014-05-01 15:15:26 +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
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
Alexander Mai
1317063b21
Fix some more (clang++) compiler warnings
2014-04-26 20:44:21 +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
853d56030b
Fixed #5559 (false positive: (error) Possible null pointer dereference: pSTRunner)
2014-04-26 11:27:58 +02:00
Daniel Marjamäki
fe80f858d1
ValueFlow: Improved analysis in the valueFlowAfterAssign
2014-04-22 16:10:20 +02:00
Daniel Marjamäki
5fc43f85b1
ValueFlow: Refactoring. Created utility function isVariableChanged()
2014-04-20 14:21:43 +02:00
Daniel Marjamäki
56eb717b8a
Fixed #5656 (false positive: (error) Possible null pointer dereference: f)
2014-04-18 16:10:18 +02:00
PKEuS
076f7a7542
Fixed some coverity findings about dead code, fixed a misleading comment
2014-04-14 22:46:51 +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
Daniel Marjamäki
189360ae20
ValueFlow: changed back bailout message
2014-04-02 19:22:40 +02:00
Daniel Marjamäki
f13be7fb6c
Travis: Fixed possible null pointer dereference reported by travis
2014-04-02 19:08:44 +02:00
Daniel Marjamäki
830249d72e
Fixed #5510 (FP: nullPointer - variable initialized in function call)
2014-04-01 07:06:20 +02:00
Alexander Mai
5fc89656c0
Fix some uninitialized variables
2014-03-30 10:22:06 +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
8eeda150cf
ValueFlow: Improved simplification inside for-loops
2014-03-25 21:40:36 +01:00
Daniel Marjamäki
c8004a8d31
Buffer overruns: Use ValueFlow to detect negative index
2014-03-25 18:22:22 +01:00
Daniel Marjamäki
aa05bf0f16
ValueFlow: Improved abstract interpretation
2014-03-24 06:48:06 +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
Daniel Marjamäki
30fa187b30
Fixed #5549 (ValueFlow: Handle static variables better in valueFlowAfterAssign)
2014-03-23 17:57:27 +01:00
Daniel Marjamäki
b6276058da
Value Flow: Improved abstract interpretation of arithmetical expressions
2014-03-22 19:02:33 +01:00
Alexander Mai
cdd6d4df27
Removing a useless variable to fix cppcheck warning in its own code
2014-03-21 22:11:10 +01:00
Daniel Marjamäki
045e9e692b
ValueFlow: restricted bailouts in for loops
2014-03-21 08:48:49 +01:00
Daniel Marjamäki
fc014f055f
ValueFlow: Removed wrong bailout
2014-03-21 08:33:45 +01:00
Daniel Marjamäki
01c29ed15f
Fixed #5518 (FP regression in 1.64: Array accessed out of bounds)
2014-03-18 17:04:33 +01:00
Daniel Marjamäki
e240282443
Value Flow: Another try with the abstract interpretation of for loops
2014-03-17 18:43:47 +01:00
Daniel Marjamäki
8c3f2c2ad9
Revert 894a65b0
. abstract interpretation of for loops. there was some crashes and performance problems. I will fix those problems when I have time and recommit.
2014-03-16 08:38:52 +01:00
Daniel Marjamäki
894a65b0b1
ValueFlow: Refactor the for-loop handling. Use abstract interpretation.
2014-03-15 11:29:33 +01:00
Thomas Jarosch
93341f4449
Use simple match where possible
...
Fixes these warnings found by "--enable=internal":
[lib/checkclass.cpp:972]: (warning) Found simple pattern inside Token::Match() call: "* *"
[lib/checkbufferoverrun.cpp:635]: (warning) Found simple pattern inside Token::Match() call: "."
[lib/checkbufferoverrun.cpp:1397]: (warning) Found simple pattern inside Token::Match() call: ";"
[lib/checksizeof.cpp:299]: (warning) Found simple pattern inside Token::Match() call: "."
[lib/checksizeof.cpp:301]: (warning) Found simple pattern inside Token::Match() call: ")"
[lib/checksizeof.cpp:303]: (warning) Found simple pattern inside Token::Match() call: "]"
[lib/checksizeof.cpp:318]: (warning) Found simple pattern inside Token::Match() call: ")"
[lib/checknullpointer.cpp:413]: (warning) Found simple pattern inside Token::Match() call: "delete"
[lib/checkio.cpp:1336]: (warning) Found simple pattern inside Token::Match() call: "> ("
[lib/checkstl.cpp:1509]: (warning) Found simple pattern inside Token::findmatch() call: ";"
[lib/checkstl.cpp:1512]: (warning) Found simple pattern inside Token::findmatch() call: ";"
[lib/checkstl.cpp:1594]: (warning) Found simple pattern inside Token::Match() call: "="
[lib/checkstl.cpp:1598]: (warning) Found simple pattern inside Token::Match() call: "] ="
[lib/checkunusedvar.cpp:755]: (warning) Found simple pattern inside Token::Match() call: "goto"
[lib/checkunusedvar.cpp:793]: (warning) Found simple pattern inside Token::Match() call: "="
[lib/checkuninitvar.cpp:376]: (warning) Found simple pattern inside Token::Match() call: "> ("
[lib/checkother.cpp:86]: (warning) Found simple pattern inside Token::Match() call: "> ("
[lib/checkother.cpp:2181]: (warning) Found simple pattern inside Token::Match() call: "> {"
[lib/valueflow.cpp:54]: (warning) Found simple pattern inside Token::Match() call: "&"
[lib/valueflow.cpp:409]: (warning) Found simple pattern inside Token::Match() call: "do"
[lib/valueflow.cpp:425]: (warning) Found simple pattern inside Token::Match() call: ") {"
[lib/valueflow.cpp:487]: (warning) Found simple pattern inside Token::Match() call: ") {"
[lib/valueflow.cpp:511]: (warning) Found simple pattern inside Token::Match() call: "} else {"
[lib/valueflow.cpp:615]: (warning) Found simple pattern inside Token::Match() call: "for ("
[lib/symboldatabase.cpp:80]: (warning) Found simple pattern inside Token::Match() call: "= {"
[lib/symboldatabase.cpp:1069]: (warning) Found simple pattern inside Token::Match() call: "std ::"
[lib/tokenize.cpp:2207]: (warning) Found simple pattern inside Token::Match() call: "< >"
[lib/tokenize.cpp:2730]: (warning) Found simple pattern inside Token::Match() call: ";"
[lib/tokenize.cpp:4234]: (warning) Found simple pattern inside Token::Match() call: "try {"
[lib/tokenize.cpp:4235]: (warning) Found simple pattern inside Token::Match() call: "} catch ("
[lib/tokenize.cpp:5500]: (warning) Found simple pattern inside Token::Match() call: "INT8"
[lib/tokenize.cpp:5752]: (warning) Found simple pattern inside Token::Match() call: "}"
[lib/tokenize.cpp:5752]: (warning) Found simple pattern inside Token::Match() call: "do"
2014-03-14 16:27:47 +01:00
Daniel Marjamäki
87c4508954
Spell fix: dont => do not
2014-02-27 16:40:42 +01:00
Daniel Marjamäki
f6b42633e8
Fixed #5434 (FP: Out-of-bounds access with ternary operator in loop)
2014-02-22 17:59:12 +01:00
Daniel Marjamäki
34730f623a
Fixed #5301 (False positive: (error) Division by zero - variables read from input stream)
2014-02-22 12:09:54 +01:00
Daniel Marjamäki
690c37633b
ValueFlow: Fixed bad values after break/continue
2014-02-17 20:07:38 +01:00
Lauri Nurmi
70a67eaf85
Change some more 0 literals into nullptr.
2014-02-16 13:38:50 +02:00
Daniel Marjamäki
23efc68dd7
use nullptr
2014-02-16 10:32:10 +01:00
Daniel Marjamäki
fd3a8a2a18
Update copyright
2014-02-15 07:45:39 +01:00
Daniel Marjamäki
b3bfd5014d
Fixed #5433 (FP:Possible null pointer dereference)
2014-01-31 15:43:34 +01:00
Lucas Manuel Rodriguez
ad0269eeeb
Refactor checks using Variable::isStlType()
2014-01-30 01:26:48 -03:00
Daniel Marjamäki
be082a8e4a
value flow: added bailout for conditional return/continue/break when number_of_if is bigger than 0
2014-01-26 15:50:25 +01:00
Daniel Marjamäki
c5971b7137
value flow: fix fp when conditional value is assigned
2014-01-25 20:14:49 +01:00
Daniel Marjamäki
c1e35e1df1
value flow: fixed multivariable problem in condition
2014-01-25 19:13:33 +01:00
Daniel Marjamäki
d227ed245f
cleanup
2014-01-25 18:51:55 +01:00
Daniel Marjamäki
df0995edf5
Fixed #5403 (Value flow: FP because post increment/decrement is not handled correctly)
2014-01-25 18:31:02 +01:00
Daniel Marjamäki
35b51468cb
value flow: Fixed FP for division then check in for loop: 'for (a=b/x;x>0;x--)'
2014-01-25 09:22:32 +01:00
Daniel Marjamäki
4647a9fc93
Fixed #5401 (value flow: fp when there are increment/decrement)
2014-01-24 18:22:38 +01:00
Daniel Marjamäki
1cac7e1686
value flow: better handling in function call bailout of casting address of variable
2014-01-24 17:47:49 +01:00
Daniel Marjamäki
135998abba
value flow: use const when possible
2014-01-24 06:16:23 +01:00
Daniel Marjamäki
85b6495cce
value flow: fixed comments
2014-01-23 19:40:47 +01:00
Daniel Marjamäki
f3f7e6d302
value flow: replacing executionpath checking of null pointers
2014-01-22 20:16:31 +01:00
Daniel Marjamäki
43db1ee797
value flow: use more specific bailouts when analysing value flow after assignment
2014-01-22 06:38:25 +01:00
Daniel Marjamäki
cc38dec3ad
value flow: a bit better handling of assigned variable
2014-01-22 06:10:17 +01:00
Daniel Marjamäki
2b7a991c1a
temporarily hide gcc warnings
2014-01-21 21:17:03 +01:00
Daniel Marjamäki
a27ccbd0f8
value flow: start implementing value flow analysis of assigned value
2014-01-21 21:13:49 +01:00
Daniel Marjamäki
b91f42453b
value flow: improved handling of cast
2014-01-20 22:26:55 +01:00
Daniel Marjamäki
bb3cc67aaa
value flow: improved calculations that depends on variable
2014-01-20 21:45:30 +01:00
Daniel Marjamäki
7ff7bc1c2e
Fixed #5376 (false positive: zerodivcond (style) Either the condition 'B>0' is useless or there is division by zero)
2014-01-19 20:16:55 +01:00
Daniel Marjamäki
84c5f47eb1
value flow: bailout for class variables that are non-const
2014-01-19 11:55:02 +01:00
Daniel Marjamäki
ccda78f347
value flow: fixed todo assertion for handling of conditions
2014-01-19 09:31:40 +01:00
Daniel Marjamäki
cdaa7abf7e
value flow: better handling of conditional code below || && ?: operators
2014-01-19 09:05:48 +01:00
Daniel Marjamäki
2d0a68cac2
cleanup redundant variable inconclusive
2014-01-18 19:51:57 +01:00
Daniel Marjamäki
77f3f6c21a
valueflow: added setTokenValue that perform calculations using set value
2014-01-18 19:30:44 +01:00
Daniel Marjamäki
c7032a8867
value flow: improved handling of loops
2014-01-18 11:54:00 +01:00
Daniel Marjamäki
57d318b2e5
valueflow: better handling of increment/decrement
2014-01-17 19:28:28 +01:00
Daniel Marjamäki
141e089329
ast: different handling of for loops. create a syntax tree for whole 'f(a;b;c)'.
2014-01-15 17:32:14 +01:00
Daniel Marjamäki
c547c9a108
value flow: fixed fp when variable is used in for-loop condition
2014-01-14 17:57:50 +01:00
Daniel Marjamäki
c1c2f4bbc6
value flow: fixed crash reported in #5343 when typeStartToken and typeEndToken are misplaced.
2014-01-13 20:54:09 +01:00
Daniel Marjamäki
7981e3d38f
value flow: fix fp when gotos are used
2014-01-13 16:07:25 +01:00
Daniel Marjamäki
b1bbb23225
value flow: fixed fp when checking symboldatabase
2014-01-13 05:52:28 +01:00
Daniel Marjamäki
8b6f001f94
value flow: inconclusive handling of unknown functions
2014-01-12 19:48:20 +01:00
Daniel Marjamäki
2e67ca06c0
value flow: some simplifications in unknown functions when there is library configuration
2014-01-12 18:19:00 +01:00
Daniel Marjamäki
d700114edf
value flow: bailout if condition is defined by macro
2014-01-12 17:16:51 +01:00
Daniel Marjamäki
3d79613f2b
value flow: more bailouts when return/break/continue/goto is reached. TODO: handle these better.
2014-01-12 15:07:58 +01:00
Daniel Marjamäki
155990cb0e
value flow: improved checking of do-while loops for non-local variables
2014-01-12 15:02:58 +01:00
Daniel Marjamäki
5b679fc732
value flow: fixed fp for data member
2014-01-12 14:37:26 +01:00
Daniel Marjamäki
21d317b7d6
value flow: fixed redundant null pointer check
2014-01-12 12:38:41 +01:00
Daniel Marjamäki
d8262963d9
value flow: condition in loop, bailout valueflow analysis before loop if there is assignment inside the loop
2014-01-12 11:58:10 +01:00
Daniel Marjamäki
f58e1ab80e
value flow: fixed fp in switch
2014-01-11 21:21:00 +01:00
Daniel Marjamäki
3625d179e5
value flow: don't perform value flow analysis in sizeof/typeof expressions
2014-01-11 21:10:01 +01:00
Daniel Marjamäki
680d3f1312
value flow: fixed fp for nested assignments
2014-01-11 20:53:23 +01:00
Daniel Marjamäki
4d045879aa
value flow: fixed fp when while condition contains variable that is changed in loop body
2014-01-11 20:25:49 +01:00
Daniel Marjamäki
75f9111775
value flow: bailout when variable is used in assignment to itself
2014-01-11 15:36:09 +01:00
Daniel Marjamäki
eaf8c83db5
value flow: refactoring. broke out function for skipping value simplifications in expressions.
2014-01-11 14:54:10 +01:00
Daniel Marjamäki
85dcb14813
value flow: bailout in valueFlowBeforeCondition if variable can be assigned by subfunction
2014-01-11 14:31:51 +01:00
Daniel Marjamäki
225001a45c
value flow: changed astparent lookup
2014-01-11 12:47:47 +01:00
Daniel Marjamäki
02b92efd1a
value flow: improved analysis of expressions below ?, && and || operators
2014-01-11 12:44:55 +01:00
Daniel Marjamäki
60348da1b5
value flow: fixed fp for rhs in && and || expressions
2014-01-11 11:30:34 +01:00
Daniel Marjamäki
1ad94a8be5
value flow: loosen up bailouts in valueFlowSubFunction
2014-01-11 07:52:25 +01:00
Daniel Marjamäki
57d241793f
value flow: fix segfault if var is null
2014-01-10 18:30:41 +01:00
Daniel Marjamäki
c687933e9f
value flow: improved handling of for loops
2014-01-10 18:19:24 +01:00
Daniel Marjamäki
3eebc8a9f1
test1
2014-01-10 16:51:58 +01:00
Daniel Marjamäki
3e7f692d4d
value flow: stop checking global variable when going out of function scope
2014-01-10 16:17:19 +01:00
Daniel Marjamäki
acb103e214
value flow: skip scopes that don't contain variable
2014-01-10 16:13:39 +01:00
Daniel Marjamäki
81513b4346
value flow: Readded safety check that tok->astOperand1() is not NULL
2014-01-10 05:54:03 +01:00
Daniel Marjamäki
d085705e8f
value flow: assume that value of global const variable is not changed
2014-01-10 05:47:56 +01:00
Daniel Marjamäki
32f2ee422f
value flow: fixed segfault and added more handling of unsigned values
2014-01-08 20:10:38 +01:00
Daniel Marjamäki
7c4a7ac3d5
value flow: starting to refactor CheckNullPointer::nullPointerDeRefThenCheck
2014-01-08 17:37:39 +01:00
Daniel Marjamäki
26a72d73fe
value flow: improved subfunction handling when using && or || in function argument
2014-01-08 16:49:15 +01:00
Daniel Marjamäki
a2fe1ebe92
value flow: pass result of bool operator to function
2014-01-08 16:17:47 +01:00
Daniel Marjamäki
6d22c9deaa
value flow: if unsigned variable is compared against 1 with either >= or <= then assume it can have the value 0
2014-01-08 06:53:17 +01:00
Daniel Marjamäki
1e3c43e708
value flow: improved bailouts in ?:
2014-01-08 06:39:15 +01:00
Daniel Marjamäki
dfee044925
value flow: Fixed wrong value in subfunction after conditional return
2014-01-08 06:04:51 +01:00
Daniel Marjamäki
1fb0b1750c
value flow: Fixed FP in ?:
2014-01-07 19:46:13 +01:00
Daniel Marjamäki
740f72fdbd
value flow: simple handling of for loops
2014-01-07 19:20:56 +01:00
Daniel Marjamäki
a6320a35e0
value flow: added experimental subfunction handling
2014-01-06 16:37:52 +01:00
Daniel Marjamäki
58fb2e756b
Value flow: added bailout on }
2014-01-06 11:27:56 +01:00
Daniel Marjamäki
a5b79bc968
value flow: fixed bailout so it really bails out
2014-01-06 10:23:17 +01:00
Daniel Marjamäki
c4fa3bb137
value flow: added bailouts for global variables and assignments
2014-01-06 07:44:58 +01:00
Daniel Marjamäki
afaf1473a8
Value flow: refactorings, write debug warning if iterating too far
2014-01-05 20:06:46 +01:00
Daniel Marjamäki
9fabc7991a
value flow: fixed segfault when checking lib/mathlib.cpp
2014-01-04 21:28:15 +01:00
Daniel Marjamäki
45278eadc7
value flow: fixed bugs
2014-01-04 21:23:17 +01:00
Daniel Marjamäki
d8270c710a
Add new experimental value flow analysis
2014-01-04 20:57:02 +01:00