From f56677a99d365a68c0bc069f38365ed7d8c471f5 Mon Sep 17 00:00:00 2001
From: chrchr-github <78114321+chrchr-github@users.noreply.github.com>
Date: Fri, 13 Oct 2023 18:08:40 +0200
Subject: [PATCH] Fix #11857 FP constParameterReference with std::map (#5551)
---
cfg/std.cfg | 3 +--
lib/astutils.cpp | 1 +
test/cfg/std.cpp | 8 ++++++++
3 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/cfg/std.cfg b/cfg/std.cfg
index 83ab7f8e7..23616f160 100644
--- a/cfg/std.cfg
+++ b/cfg/std.cfg
@@ -6666,9 +6666,8 @@ The obsolete function 'gets' is called. With 'gets' you'll get a buffer overrun
-
+
-
false
diff --git a/lib/astutils.cpp b/lib/astutils.cpp
index d1e92ed93..f417ad704 100644
--- a/lib/astutils.cpp
+++ b/lib/astutils.cpp
@@ -2582,6 +2582,7 @@ bool isVariableChanged(const Token *tok, int indirect, const Settings *settings,
Library::Container::Action::CHANGE_CONTENT,
Library::Container::Action::CHANGE_INTERNAL,
Library::Container::Action::CLEAR,
+ Library::Container::Action::FIND,
Library::Container::Action::PUSH,
Library::Container::Action::POP,
Library::Container::Action::RESIZE},
diff --git a/test/cfg/std.cpp b/test/cfg/std.cpp
index 4952c79d8..81e5ba877 100644
--- a/test/cfg/std.cpp
+++ b/test/cfg/std.cpp
@@ -880,6 +880,14 @@ void std_unordered_map_emplace_unnitvar(std::unordered_set& u)
u.emplace(i);
}
+int std_map_find_constref(std::map& m) // #11857
+{
+ std::map& r = m;
+ std::map::iterator it = r.find(42);
+ int* p = &it->second;
+ return ++*p;
+}
+
void valid_code()
{
std::vector vecInt{0, 1, 2};