Commit Graph

23589 Commits

Author SHA1 Message Date
Daniel Marjamäki 97de6d2e5f
Merge pull request #2686 from Ken-Patrick/boost_throw
Better handle noreturn or throwing functions in valueflow
2020-06-17 20:25:31 +02:00
Ken-Patrick Lehrmann c297ed8204 Better handle noreturn or throwing functions in valueflow
Teaching cppcheck about `BOOST_THROW_EXCEPTION` and
`boost::throw_exception`, and using noreturn information from libraries
in value flow.

This fixes false positive nullPointerRedundantCheck with the following
code:
```
void throwexception(int * buf)
{
    if (!buf)
        boost::throw_exception(std::bad_alloc());
    *buf = 0;
}
```
2020-06-17 19:06:14 +02:00
Paul 21f76d62a1 Merge branch 'main' into check-mutexes 2020-06-17 10:45:43 -05:00
Daniel Marjamäki fe4657f218 Tweaked cppunit.cfg 2020-06-17 13:10:30 +02:00
Daniel Marjamäki 51a6af299f
Merge pull request #2683 from Ken-Patrick/cast_expandTemplate
Fix handling of c++ casts in template expansion
2020-06-17 09:21:01 +02:00
Daniel Marjamäki 94f92f00fe
Merge pull request #2684 from firewave/precompiled
use precompiled headers if CMake supports it
2020-06-17 07:53:51 +02:00
Daniel Marjamäki d26593321d Fixed Visual Studio compile error 2020-06-16 22:56:01 +02:00
Daniel Marjamäki 4947a3b7ab Bug hunting; review and improve handling of multi dimensional arrays 2020-06-16 22:50:45 +02:00
firewave a49d60f0b3 use precompiled headers if CMake supports it 2020-06-16 19:56:53 +02:00
Ken-Patrick Lehrmann 5c1a2db434 Fix handling of c++ casts in template expansion
Cast were not expanded properly: the `<` was not taken into account in
typeindentlevel, so we would then miss a `>`, resulting in syntaxError.
2020-06-16 19:36:04 +02:00
Paul 18225ee27e Update text and change to warnings 2020-06-16 10:32:39 -05:00
Paul 7c9144ea47 Add to classInfo 2020-06-15 19:43:33 -05:00
Paul 172537807b Add check for incorrect usage of mutexes and lock guards 2020-06-15 19:40:54 -05:00
Daniel Marjamäki d984d84450
Merge pull request #2681 from firewave/py
donate_cpu_lib.py: fixed Python error
2020-06-16 02:40:45 +02:00
Daniel Marjamäki 6faad9cd90 Bug hunting; better handling when assigning multidimensional array in for loop 2020-06-15 22:42:45 +02:00
firewave fa7e687853 donate_cpu_lib.py: fixed Python error 2020-06-15 22:12:22 +02:00
Daniel Marjamäki b36c85d8fd Rename VerifyException to BugHuntingException 2020-06-15 22:07:32 +02:00
orbitcowboy 86e64f6224 Integrated PR #2679 into main 2020-06-15 20:11:20 +02:00
Daniel Marjamäki 33388217a5 new default branch is main 2020-06-15 20:04:57 +02:00
orbitcowboy b60b083af8 wxwidgets.cfg: Added support for more interfaces 2020-06-15 20:03:20 +02:00
Daniel Marjamäki 60208a11d1 donate_cpu: Update OLD_VERSION to 2.1 2020-06-15 19:48:20 +02:00
Daniel Marjamäki e2c99ee697 donate_cpu: master branch was renamed to main 2020-06-15 19:46:34 +02:00
Daniel Marjamäki f5fe5ca2dd
9768: Fix ast with throw in the middle of return (#2678)
* 9768: Fix ast with throw in the middle of return

```
int f(bool x)
{
    return x ? 0 : throw 0;
}
```

The `throw` part was not included in the ast, leading to an invalid
ternary operator.

* 8526: Fix ast construction for ternary operator

This tries to decide a bit more properly when ':' can be part of a
ternary operator. More precisely, there are some times when we want to
delay the construction of the ast for ':', so that it is place
accordingly to the matching '?'.

Typically, this fixes an issue with
`return val < 0 ? throw 1 : val;`,
where the ast for ':' would be constructed during as part of the
`throw`, and the ast for `?` would be invalid.

This patch is a bit of a hardcode, stating that we don't expect ':'
inside a throw, unless there is a complete ternary operator in there
(there can't be a range based for loop, a case in a switch). When we
reach ':', we know we are and the end of the `throw`.
2020-06-15 10:36:02 +02:00
orbitcowboy b3d0a520fc wxwidgets.cfg: Added support for more interfaces. 2020-06-15 09:53:40 +02:00
orbitcowboy 505509e6c0 wxwidgets.cfg: Added support for more interfaces. 2020-06-15 09:47:58 +02:00
orbitcowboy f8c37e771c wxwidgets.cfg: Added support for more interfaces. 2020-06-15 09:42:26 +02:00
orbitcowboy 67d73ecf86 wxwidgets.cfg: Added support for more interfaces. 2020-06-15 09:39:36 +02:00
orbitcowboy c0e14e8981 wxwidgets.cfg: Added support for more interfaces. 2020-06-15 09:29:46 +02:00
Daniel Marjamäki 3fe2b6fe50 Update test. An inconclusive warning message is now shown. 2020-06-14 22:57:50 +02:00
Daniel Marjamäki 2b0e4926bc valueFlowAfterAssign: variable initialization 2020-06-14 21:14:05 +02:00
Ken-Patrick Lehrmann 7ddb7aef7d 8526: Fix ast construction for ternary operator
This tries to decide a bit more properly when ':' can be part of a
ternary operator. More precisely, there are some times when we want to
delay the construction of the ast for ':', so that it is place
accordingly to the matching '?'.

Typically, this fixes an issue with
`return val < 0 ? throw 1 : val;`,
where the ast for ':' would be constructed during as part of the
`throw`, and the ast for `?` would be invalid.

This patch is a bit of a hardcode, stating that we don't expect ':'
inside a throw, unless there is a complete ternary operator in there
(there can't be a range based for loop, a case in a switch). When we
reach ':', we know we are and the end of the `throw`.
2020-06-14 18:57:18 +02:00
Daniel Marjamäki dc5e93a103 manual: preprocessor configuration, platform, standard 2020-06-14 17:40:34 +02:00
Daniel Marjamäki fac8e52379 Tweked --help output 2020-06-14 17:23:29 +02:00
Ken-Patrick Lehrmann 4023a487ff 9768: Fix ast with throw in the middle of return
```
int f(bool x)
{
    return x ? 0 : throw 0;
}
```

The `throw` part was not included in the ast, leading to an invalid
ternary operator.
2020-06-14 14:49:10 +02:00
Daniel Marjamäki f44192e94b democlient: fix compile errors 2020-06-14 14:01:41 +02:00
orbitcowboy 1fae8735b6 wxwidgets.cfg: Added support for more interfaces 2020-06-14 10:18:26 +02:00
orbitcowboy d4b60394f8 wxwidgets.cfg: Added support for more interfaces 2020-06-14 10:14:53 +02:00
orbitcowboy ba3d461588 wxwidgets.cfg: Added support for more interfaces 2020-06-14 10:10:05 +02:00
orbitcowboy f69ce02c90 Running astyle [ci skip] 2020-06-14 10:06:54 +02:00
orbitcowboy 1a5f076802 wxwidgets.cfg: Added support for more interfaces 2020-06-14 10:06:23 +02:00
Daniel Marjamäki 0f28e7b88e AboutDialog: Updated copyright year so we don't have to manually tweak it. Thank you Z3 library. 2020-06-14 07:36:19 +02:00
Daniel Marjamäki 97fd51edd1 Set version to 2.1.99 / 2.2 dev 2020-06-14 07:16:14 +02:00
Daniel Marjamäki 6d5d12f283 minor updates in createrelease 2020-06-13 18:19:47 +02:00
Daniel Marjamäki 9cdad2fb33 Set debug mode 2020-06-13 18:09:27 +02:00
Daniel Marjamäki 0f23bde2b0 2.1: Set release mode in Makefile 2020-06-13 18:08:37 +02:00
Daniel Marjamäki 026bbac975 2.1: Set version 2020-06-13 17:04:26 +02:00
Daniel Marjamäki 37245a8179 Update copyright year 2020-06-13 16:37:12 +02:00
Daniel Marjamäki f78431caee lupdate gui.pro 2020-06-13 16:35:45 +02:00
Paul Fultz II 06ed088bd0
Fix issue 9751: Wrong lifetime caused by std::function (#2676) 2020-06-13 10:26:54 +02:00
Paul Fultz II 03b41ac987
Fix issue 9718: False positive: Parameter can be declared const when written to via stream extraction operator (#2677) 2020-06-13 09:20:40 +02:00