From dda172d690a29415ccd61170739f4b3d801edcb1 Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Mon, 10 Nov 2025 13:30:56 +0100 Subject: [PATCH 1/3] Update checkautovariables.cpp --- lib/checkautovariables.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/checkautovariables.cpp b/lib/checkautovariables.cpp index 8b9023d9473..ab0ad0505b0 100644 --- a/lib/checkautovariables.cpp +++ b/lib/checkautovariables.cpp @@ -99,6 +99,8 @@ static bool isAutoVar(const Token *tok) } while (Token::Match(tok, "%name% .|::")); if (Token::Match(tok, "%name% (")) return false; + if (tok->variable() && tok->variable()->isPointer()) + return false; } return true; } From 3e5feac4e300a91add1b23ae91852f16fe2fd3cc Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Mon, 10 Nov 2025 13:36:18 +0100 Subject: [PATCH 2/3] Update testautovariables.cpp --- test/testautovariables.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/test/testautovariables.cpp b/test/testautovariables.cpp index c12261b1b1a..9b8eaabf024 100644 --- a/test/testautovariables.cpp +++ b/test/testautovariables.cpp @@ -68,6 +68,7 @@ class TestAutoVariables : public TestFixture { TEST_CASE(testautovar14); // ticket #4776 - assignment of function parameter, goto TEST_CASE(testautovar15); // ticket #6538 TEST_CASE(testautovar16); // ticket #8114 + TEST_CASE(testautovar17); TEST_CASE(testautovar_array1); TEST_CASE(testautovar_array2); TEST_CASE(testautovar_array3); @@ -504,6 +505,17 @@ class TestAutoVariables : public TestFixture { ASSERT_EQUALS("", errout_str()); } + void testautovar17() { + check("struct S { int* p; };\n" // #14257 + "int a[10];\n" + "void f(int** q) {\n" + " S s;\n" + " s.p = a;\n" + " *q = &s.p[0];\n"; + "}\n"); + ASSERT_EQUALS("", errout_str()); + } + void testautovar_array1() { check("void func1(int* arr[2])\n" "{\n" From b7819ddcee9606d50cd43ea723557ab8f7ba2ee4 Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Mon, 10 Nov 2025 14:22:55 +0100 Subject: [PATCH 3/3] Update testautovariables.cpp --- test/testautovariables.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/testautovariables.cpp b/test/testautovariables.cpp index 9b8eaabf024..73380699255 100644 --- a/test/testautovariables.cpp +++ b/test/testautovariables.cpp @@ -511,7 +511,7 @@ class TestAutoVariables : public TestFixture { "void f(int** q) {\n" " S s;\n" " s.p = a;\n" - " *q = &s.p[0];\n"; + " *q = &s.p[0];\n" "}\n"); ASSERT_EQUALS("", errout_str()); }