@@ -36,6 +36,8 @@ class TestBufferOverrun : public TestFixture {
3636
3737private:
3838 /* const*/ Settings settings0 = settingsBuilder().library(" std.cfg" ).severity(Severity::warning).severity(Severity::style).severity(Severity::portability).build();
39+ const Settings settings0_i = settingsBuilder(settings0).certainty(Certainty::inconclusive).build();
40+ const Settings settings1 = settingsBuilder(settings0).severity(Severity::performance).certainty(Certainty::inconclusive).build();
3941
4042 struct CheckOptions
4143 {
@@ -46,7 +48,7 @@ class TestBufferOverrun : public TestFixture {
4648#define check (...) check_(__FILE__, __LINE__, __VA_ARGS__)
4749 template <size_t size>
4850 void check_ (const char * file, int line, const char (&code)[size], const CheckOptions& options = make_default_obj()) {
49- const Settings settings = options.s ? *options.s : settingsBuilder (settings0). certainty (Certainty::inconclusive). build () ;
51+ const Settings& settings = options.s ? *options.s : settings0_i ;
5052
5153 // Tokenize..
5254 SimpleTokenizer tokenizer (settings, *this , options.cpp );
@@ -58,10 +60,8 @@ class TestBufferOverrun : public TestFixture {
5860
5961 // TODO: get rid of this
6062 void check_ (const char * file, int line, const std::string& code) {
61- const Settings settings = settingsBuilder (settings0).certainty (Certainty::inconclusive).build ();
62-
6363 // Tokenize..
64- SimpleTokenizer tokenizer (settings , *this );
64+ SimpleTokenizer tokenizer (settings0_i , *this );
6565 ASSERT_LOC (tokenizer.tokenize (code), file, line);
6666
6767 // Check for buffer overruns..
@@ -72,9 +72,7 @@ class TestBufferOverrun : public TestFixture {
7272 template <size_t size>
7373 void checkP_ (const char * file, int line, const char (&code)[size])
7474 {
75- const Settings settings = settingsBuilder (settings0).severity (Severity::performance).certainty (Certainty::inconclusive).build ();
76-
77- SimpleTokenizer2 tokenizer (settings, *this , code, " test.cpp" );
75+ SimpleTokenizer2 tokenizer (settings1, *this , code, " test.cpp" );
7876
7977 // Tokenizer..
8078 ASSERT_LOC (tokenizer.simplifyTokens1 (" " ), file, line);
@@ -2722,7 +2720,7 @@ class TestBufferOverrun : public TestFixture {
27222720 " char str[6] = \"\\ 0\" ;\n "
27232721 " unsigned short port = 65535;\n "
27242722 " snprintf(str, sizeof(str), \" %hu\" , port);\n "
2725- " }" , dinit (CheckOptions, $.s = &settings0, $. cpp = false ));
2723+ " }" , dinit (CheckOptions, $.cpp = false ));
27262724 ASSERT_EQUALS (" " , errout_str ());
27272725
27282726 check (" int f(int x) {\n " // #11020
@@ -3499,18 +3497,16 @@ class TestBufferOverrun : public TestFixture {
34993497
35003498 void buffer_overrun_errorpath () {
35013499 setMultiline ();
3502- const Settings settingsOld = settings0; // TODO: get rid of this
3503- settings0 .templateLocation = " {file}:{line}:note:{info}" ;
3500+ Settings s = settings0;
3501+ s .templateLocation = " {file}:{line}:note:{info}" ;
35043502
35053503 check (" void f() {\n "
35063504 " char *p = malloc(10);\n "
35073505 " memset(p, 0, 20);\n "
3508- " }" );
3506+ " }" , dinit (CheckOptions, $. s = &s) );
35093507 ASSERT_EQUALS (" [test.cpp:3:12]: error: Buffer is accessed out of bounds: p [bufferAccessOutOfBounds]\n "
35103508 " [test.cpp:2:13]: note: Assign p, buffer with size 10\n "
35113509 " [test.cpp:3:12]: note: Buffer overrun\n " , errout_str ());
3512-
3513- settings0 = settingsOld;
35143510 }
35153511
35163512 void buffer_overrun_bailoutIfSwitch () {
0 commit comments