From 66ecbc55e3681201f0accbb619bfb1f1a3b7bdc1 Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Thu, 2 May 2024 10:40:06 +0200 Subject: [PATCH 01/11] Update std.cfg --- cfg/std.cfg | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/cfg/std.cfg b/cfg/std.cfg index a736d1ede38..20265ccd603 100644 --- a/cfg/std.cfg +++ b/cfg/std.cfg @@ -5119,6 +5119,7 @@ The obsolete function 'gets' is called. With 'gets' you'll get a buffer overrun + false @@ -8217,6 +8218,7 @@ initializer list (7) string& replace (const_iterator i1, const_iterator i2, init + > false @@ -8667,6 +8669,7 @@ initializer list (7) string& replace (const_iterator i1, const_iterator i2, init + false @@ -8815,6 +8818,7 @@ initializer list (7) string& replace (const_iterator i1, const_iterator i2, init + From 5d6135fb768728e45a0d8c846ed941b6c77bf424 Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Thu, 2 May 2024 10:40:45 +0200 Subject: [PATCH 02/11] Update std.cpp --- test/cfg/std.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/test/cfg/std.cpp b/test/cfg/std.cpp index 9ce1a976a68..a150e9e46c5 100644 --- a/test/cfg/std.cpp +++ b/test/cfg/std.cpp @@ -5022,3 +5022,9 @@ void assertWithSideEffect_system() // cppcheck-suppress [assertWithSideEffect,checkLibraryNoReturn] // TODO: #8329 assert(std::system("abc")); } + +void assertWithSideEffect_std_map_at(const std::map& m) // #12695 +{ + // cppcheck-suppress checkLibraryNoReturn + assert(m.at(0)); +} From 5f40911077112569df6f0c42dc037fb1b7b144c3 Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Thu, 2 May 2024 10:50:58 +0200 Subject: [PATCH 03/11] Update std.cfg --- cfg/std.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cfg/std.cfg b/cfg/std.cfg index 20265ccd603..3b1741f81fe 100644 --- a/cfg/std.cfg +++ b/cfg/std.cfg @@ -8218,7 +8218,7 @@ initializer list (7) string& replace (const_iterator i1, const_iterator i2, init - > + false From ed5b889c69e5855bc9219806add0d9ecb7b65ccc Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Thu, 2 May 2024 12:50:54 +0200 Subject: [PATCH 04/11] Update std.cfg --- cfg/std.cfg | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cfg/std.cfg b/cfg/std.cfg index 3b1741f81fe..dc88a689872 100644 --- a/cfg/std.cfg +++ b/cfg/std.cfg @@ -4806,6 +4806,7 @@ The obsolete function 'gets' is called. With 'gets' you'll get a buffer overrun + false @@ -5378,6 +5379,7 @@ The obsolete function 'gets' is called. With 'gets' you'll get a buffer overrun + false From 3028155994618d8a8eef4fde0ee9ca6a2026d1cc Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Thu, 2 May 2024 13:47:06 +0200 Subject: [PATCH 05/11] Update std.cfg --- cfg/std.cfg | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cfg/std.cfg b/cfg/std.cfg index dc88a689872..af2294a9d1b 100644 --- a/cfg/std.cfg +++ b/cfg/std.cfg @@ -5120,7 +5120,7 @@ The obsolete function 'gets' is called. With 'gets' you'll get a buffer overrun - + false @@ -8132,6 +8132,7 @@ initializer list (7) string& replace (const_iterator i1, const_iterator i2, init + false From 449ef7aa392c505177ba558f782a84df37da85a3 Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Thu, 2 May 2024 16:49:28 +0200 Subject: [PATCH 06/11] Update checkassert.cpp --- lib/checkassert.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/checkassert.cpp b/lib/checkassert.cpp index 0202ed7454a..523963e1e18 100644 --- a/lib/checkassert.cpp +++ b/lib/checkassert.cpp @@ -68,6 +68,8 @@ void CheckAssert::assertWithSideEffects() return ac.second.iteratorInfo.container > 0; // bailout, takes iterators -> assume read access })) continue; + if (tmp->str() == "get" && Token::simpleMatch(tmp->astParent(), ".") && astIsSmartPointer(tmp->astParent()->astOperand1())) + continue; sideEffectInAssertError(tmp, mSettings->library.getFunctionName(tmp)); } continue; From 9af0cbca9659da3c56f4ca2cbb663cb3d3bcfcb6 Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Thu, 2 May 2024 19:19:24 +0200 Subject: [PATCH 07/11] Update checkassert.cpp --- lib/checkassert.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/checkassert.cpp b/lib/checkassert.cpp index 523963e1e18..3ed3ae12aa7 100644 --- a/lib/checkassert.cpp +++ b/lib/checkassert.cpp @@ -70,6 +70,9 @@ void CheckAssert::assertWithSideEffects() continue; if (tmp->str() == "get" && Token::simpleMatch(tmp->astParent(), ".") && astIsSmartPointer(tmp->astParent()->astOperand1())) continue; + if (f->containerYield == Library::Container::Yield::START_ITERATOR || // bailout for std::begin/end + f->containerYield == Library::Container::Yield::END_ITERATOR) + continue; sideEffectInAssertError(tmp, mSettings->library.getFunctionName(tmp)); } continue; From e01aaafc9565af2e5c6a3b864c44d9188590893f Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Thu, 2 May 2024 19:24:12 +0200 Subject: [PATCH 08/11] Update std.cpp --- test/cfg/std.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/test/cfg/std.cpp b/test/cfg/std.cpp index a150e9e46c5..e3e93759af5 100644 --- a/test/cfg/std.cpp +++ b/test/cfg/std.cpp @@ -5028,3 +5028,16 @@ void assertWithSideEffect_std_map_at(const std::map& m) // #12695 // cppcheck-suppress checkLibraryNoReturn assert(m.at(0)); } + +void assertWithSideEffect_std_unique_ptr_get((std::unique_ptr& p) +{ + // cppcheck-suppress checkLibraryNoReturn + assert(p.get()); +} + +void assertWithSideEffect_std_begin(const std::vector& v) { + // cppcheck-suppress [checkLibraryNoReturn, checkLibraryFunction] // TODO + assert(std::is_sorted(std::begin(v), std::end(v), [](const std::string& a, const std::string& b) { + return a.size() < b.size(); + })); +} From 481d4e2f0c016e5d61321bf3d1eca897d6fd9df9 Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Thu, 2 May 2024 19:28:50 +0200 Subject: [PATCH 09/11] Update std.cpp --- test/cfg/std.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/cfg/std.cpp b/test/cfg/std.cpp index e3e93759af5..6482b7a650e 100644 --- a/test/cfg/std.cpp +++ b/test/cfg/std.cpp @@ -5029,10 +5029,10 @@ void assertWithSideEffect_std_map_at(const std::map& m) // #12695 assert(m.at(0)); } -void assertWithSideEffect_std_unique_ptr_get((std::unique_ptr& p) +void assertWithSideEffect_std_unique_ptr_get(std::unique_ptr& p) { // cppcheck-suppress checkLibraryNoReturn - assert(p.get()); + assert(p.get()); } void assertWithSideEffect_std_begin(const std::vector& v) { From 8de52741716280f6b145348a6118612a39cd2fe1 Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Thu, 2 May 2024 19:34:24 +0200 Subject: [PATCH 10/11] Update std.cpp --- test/cfg/std.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/cfg/std.cpp b/test/cfg/std.cpp index 6482b7a650e..b949f9db9bc 100644 --- a/test/cfg/std.cpp +++ b/test/cfg/std.cpp @@ -5036,8 +5036,8 @@ void assertWithSideEffect_std_unique_ptr_get(std::unique_ptr& p) } void assertWithSideEffect_std_begin(const std::vector& v) { - // cppcheck-suppress [checkLibraryNoReturn, checkLibraryFunction] // TODO + // cppcheck-suppress checkLibraryFunction // TODO assert(std::is_sorted(std::begin(v), std::end(v), [](const std::string& a, const std::string& b) { return a.size() < b.size(); - })); + })); // cppcheck-suppress checkLibraryNoReturn } From 930fee1f5d6a3fdd6b32bacf2a3453ade7044dcd Mon Sep 17 00:00:00 2001 From: chrchr-github Date: Thu, 2 May 2024 22:31:33 +0200 Subject: [PATCH 11/11] --- cfg/gtk.cfg | 3 +++ cfg/opengl.cfg | 1 + cfg/qt.cfg | 1 + cfg/sqlite3.cfg | 2 ++ cfg/std.cfg | 2 ++ 5 files changed, 9 insertions(+) diff --git a/cfg/gtk.cfg b/cfg/gtk.cfg index 1e20a335128..492cf592988 100644 --- a/cfg/gtk.cfg +++ b/cfg/gtk.cfg @@ -1506,6 +1506,7 @@ + false @@ -1679,6 +1680,7 @@ + false @@ -4039,6 +4041,7 @@ + false diff --git a/cfg/opengl.cfg b/cfg/opengl.cfg index 72dcaddb961..ec37abf5516 100644 --- a/cfg/opengl.cfg +++ b/cfg/opengl.cfg @@ -211,6 +211,7 @@ + false diff --git a/cfg/qt.cfg b/cfg/qt.cfg index 824c4bf2881..8d599ed5d3d 100644 --- a/cfg/qt.cfg +++ b/cfg/qt.cfg @@ -72,6 +72,7 @@ + false diff --git a/cfg/sqlite3.cfg b/cfg/sqlite3.cfg index 0b0a439b18c..6c1053b393f 100644 --- a/cfg/sqlite3.cfg +++ b/cfg/sqlite3.cfg @@ -966,6 +966,7 @@ + false @@ -988,6 +989,7 @@ + false diff --git a/cfg/std.cfg b/cfg/std.cfg index af2294a9d1b..bcea6e88b28 100644 --- a/cfg/std.cfg +++ b/cfg/std.cfg @@ -5623,6 +5623,7 @@ The obsolete function 'gets' is called. With 'gets' you'll get a buffer overrun + arg1 < 'A' || arg1 > 'Z' ? arg1 : arg1 + 32 false @@ -8175,6 +8176,7 @@ initializer list (7) string& replace (const_iterator i1, const_iterator i2, init + false