From https://trac.cppcheck.net/ticket/14268. ```cpp #include "missing.h" #define PREFIX_WITH_MACRO(test_name) Macro##test_name TEST_P(PREFIX_WITH_MACRO(NamingTest), n) {} ``` ``` $ ./simplecpp a.cpp -D"TEST_P(A,B)=void __ ## A ## _ ## B ( )" ``` ``` ==153198==ERROR: AddressSanitizer: stack-use-after-return on address 0x7bb828201398 at pc 0x55c85b5c80b3 bp 0x7ffd401c95e0 sp 0x7ffd401c95d0 READ of size 8 at 0x7bb828201398 thread T0 #0 0x55c85b5c80b2 in std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::size() const /usr/include/c++/15.2.1/bits/stl_vector.h:1119 #1 0x55c85b5c80b2 in simplecpp::Location::file[abi:cxx11]() const /home/user/CLionProjects/simplecpp/simplecpp.h:108 #2 0x55c85b5c80b2 in main /home/user/CLionProjects/simplecpp/main.cpp:210 #3 0x7fb829c27674 (/usr/lib/libc.so.6+0x27674) (BuildId: 4fe011c94a88e8aeb6f2201b9eb369f42b4a1e9e) #4 0x7fb829c27728 in __libc_start_main (/usr/lib/libc.so.6+0x27728) (BuildId: 4fe011c94a88e8aeb6f2201b9eb369f42b4a1e9e) #5 0x55c85b5c8cf4 in _start (/home/user/CLionProjects/simplecpp/simplecpp+0x16cf4) (BuildId: 5a0940bf2b4df8317a2d3a027c16b44de010a853) Address 0x7bb828201398 is located in stack of thread T0 at offset 5016 in frame #0 0x55c85b60336f in simplecpp::preprocess(simplecpp::TokenList&, simplecpp::TokenList const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, simplecpp::FileDataCache&, simplecpp::DUI const&, std::__cxx11::list<simplecpp::Output, std::allocator<simplecpp::Output> >*, std::__cxx11::list<simplecpp::MacroUsage, std::allocator<simplecpp::MacroUsage> >*, std::__cxx11::list<simplecpp::IfCond, std::allocator<simplecpp::IfCond> >*) /home/user/CLionProjects/simplecpp/simplecpp.cpp:3285 This frame has 340 object(s): [32, 33) '<unknown>' [48, 49) '<unknown>' [64, 65) '<unknown>' [80, 81) '<unknown>' [96, 97) '<unknown>' [112, 113) '<unknown>' [128, 129) '<unknown>' [144, 145) '<unknown>' [160, 161) '<unknown>' [176, 177) '<unknown>' [192, 193) '<unknown>' [208, 209) '<unknown>' [224, 225) '<unknown>' [240, 241) '<unknown>' [256, 257) '<unknown>' [272, 273) '<unknown>' [288, 289) '<unknown>' [304, 305) '<unknown>' [320, 321) '<unknown>' [336, 337) '<unknown>' [352, 353) '<unknown>' [368, 369) '<unknown>' [384, 385) '<unknown>' [400, 401) '<unknown>' [416, 417) '<unknown>' [432, 433) '<unknown>' [448, 449) '<unknown>' [464, 465) '<unknown>' [480, 481) '<unknown>' [496, 497) '<unknown>' [512, 513) '<unknown>' [528, 529) '<unknown>' [544, 545) '<unknown>' [560, 561) '<unknown>' [576, 577) '<unknown>' [592, 593) '<unknown>' [608, 609) '<unknown>' [624, 625) '<unknown>' [640, 641) '<unknown>' [656, 657) '<unknown>' [672, 673) '<unknown>' [688, 689) '<unknown>' [704, 705) '<unknown>' [720, 721) '<unknown>' [736, 737) '<unknown>' [752, 753) '<unknown>' [768, 769) '__map_alloc' [784, 785) '<unknown>' [800, 801) '<unknown>' [816, 817) '<unknown>' [832, 833) '<unknown>' [848, 849) '<unknown>' [864, 865) '<unknown>' [880, 881) '<unknown>' [896, 897) '<unknown>' [912, 913) '<unknown>' [928, 929) '<unknown>' [944, 945) '__map_alloc' [960, 961) '__map_alloc' [976, 977) '__map_alloc' [992, 993) '<unknown>' [1008, 1009) '__map_alloc' [1024, 1025) '__map_alloc' [1040, 1041) '__map_alloc' [1056, 1057) '__lhs' (line 3284) [1072, 1073) '__lhs' (line 3284) [1088, 1092) '<unknown>' [1104, 1108) '<unknown>' [1120, 1124) '<unknown>' [1136, 1144) 'it' (line 3319) [1168, 1176) '<unknown>' [1200, 1208) '<unknown>' [1232, 1240) '<unknown>' [1264, 1272) '<unknown>' [1296, 1304) '<unknown>' [1328, 1336) '<unknown>' [1360, 1368) 'it' (line 3385) [1392, 1400) '<unknown>' [1424, 1432) '<unknown>' [1456, 1464) 'rawtok' (line 3393) [1488, 1496) '<unknown>' [1520, 1528) '<unknown>' [1552, 1560) 'it' (line 3453) [1584, 1592) '<unknown>' [1616, 1624) 'inctok' (line 3490) [1648, 1656) '<unknown>' [1680, 1688) '<unknown>' [1712, 1720) '<unknown>' [1744, 1752) '<unknown>' [1776, 1784) '<unknown>' [1808, 1816) '<unknown>' [1840, 1848) '<unknown>' [1872, 1880) '<unknown>' [1904, 1912) '<unknown>' [1936, 1944) 'tmp' (line 3659) [1968, 1976) 'macroIt' (line 3779) [2000, 2008) '<unknown>' [2032, 2040) '<unknown>' [2064, 2072) '<unknown>' [2096, 2104) '<unknown>' [2128, 2136) 'usageIt' (line 3784) [2160, 2168) '<unknown>' [2192, 2200) '<unknown>' [2224, 2232) '<unknown>' [2256, 2264) '<unknown>' [2288, 2296) '<unknown>' [2320, 2328) '<unknown>' [2352, 2360) '<unknown>' [2384, 2392) '<unknown>' [2416, 2424) '<unknown>' [2448, 2456) '<unknown>' [2480, 2488) '<unknown>' [2512, 2520) '<unknown>' [2544, 2552) '<unknown>' [2576, 2584) '<unknown>' [2608, 2616) '<unknown>' [2640, 2648) '<unknown>' [2672, 2680) '<unknown>' [2704, 2712) '<unknown>' [2736, 2744) '<unknown>' [2768, 2776) '<unknown>' [2800, 2808) '<unknown>' [2832, 2840) '<unknown>' [2864, 2872) '<unknown>' [2896, 2904) '<unknown>' [2928, 2936) '<unknown>' [2960, 2968) '<unknown>' [2992, 3000) '<unknown>' [3024, 3032) '<unknown>' [3056, 3064) '<unknown>' [3088, 3096) '<unknown>' [3120, 3128) '<unknown>' [3152, 3160) '<unknown>' [3184, 3192) '<unknown>' [3216, 3224) '<unknown>' [3248, 3256) '<unknown>' [3280, 3288) '<unknown>' [3312, 3320) '<unknown>' [3344, 3352) '<unknown>' [3376, 3384) '<unknown>' [3408, 3416) '<unknown>' [3440, 3448) '__an' [3472, 3480) 't' (line 3260) [3504, 3512) '<unknown>' [3536, 3544) '<unknown>' [3568, 3576) '__j' [3600, 3608) '<unknown>' [3632, 3640) '<unknown>' [3664, 3672) '<unknown>' [3696, 3704) '<unknown>' [3728, 3736) '<unknown>' [3760, 3768) '<unknown>' [3792, 3800) '<unknown>' [3824, 3832) '<unknown>' [3856, 3864) '<unknown>' [3888, 3896) '<unknown>' [3920, 3936) '<unknown>' [3952, 3968) '<unknown>' [3984, 4000) '<unknown>' [4016, 4032) '<unknown>' [4048, 4064) '<unknown>' [4080, 4096) '<unknown>' [4112, 4128) '<unknown>' [4144, 4160) '<unknown>' [4176, 4192) '<unknown>' [4208, 4224) '<unknown>' [4240, 4256) '<unknown>' [4272, 4288) '<unknown>' [4304, 4320) '<unknown>' [4336, 4352) '<unknown>' [4368, 4384) '<unknown>' [4400, 4416) '<unknown>' [4432, 4448) '<unknown>' [4464, 4480) '<unknown>' [4496, 4512) '<unknown>' [4528, 4544) '<unknown>' [4560, 4576) '<unknown>' [4592, 4608) '<unknown>' [4624, 4640) '<unknown>' [4656, 4672) '<unknown>' [4688, 4704) '__guard' [4720, 4736) '<unknown>' [4752, 4768) '__guard' [4784, 4800) '<unknown>' [4816, 4832) '__guard' [4848, 4864) '<unknown>' [4880, 4896) '__guard' [4912, 4928) '<unknown>' [4944, 4960) '__guard' [4976, 4992) '<unknown>' [5008, 5032) 'dummy' (line 3314) <== Memory access at offset 5016 is inside this variable [5072, 5096) '<unknown>' [5136, 5160) 'loc' (line 3755) [5200, 5224) 'usage' (line 3781) [5264, 5296) '__tmp' [5328, 5360) '__tmp' [5392, 5424) '__tmp' [5456, 5488) '__tmp' [5520, 5552) '__tmp' [5584, 5616) '__tmp' [5648, 5680) '__tmp' [5712, 5744) '__tmp' [5776, 5808) '__tmp' [5840, 5872) '__tmp' [5904, 5936) '__tmp' [5968, 6000) '__tmp' [6032, 6064) '__tmp' [6096, 6128) '__tmp' [6160, 6192) '__tmp' [6224, 6256) '__tmp' [6288, 6320) '__tmp' [6352, 6384) '<unknown>' [6416, 6448) '<unknown>' [6480, 6512) '<unknown>' [6544, 6576) '<unknown>' [6608, 6640) '<unknown>' [6672, 6704) '<unknown>' [6736, 6768) '<unknown>' [6800, 6832) '<unknown>' [6864, 6896) '<unknown>' [6928, 6960) '<unknown>' [6992, 7024) '<unknown>' [7056, 7088) '<unknown>' [7120, 7168) 'sizeOfType' (line 3291) [7200, 7248) 'pragmaOnce' (line 3382) [7280, 7328) 'maybeUsedMacros' (line 3391) [7360, 7416) 'macros' (line 3317) [7456, 7512) 'ltime' (line 3341) [7552, 7624) 'inc1' (line 3483) [7664, 7736) 'inc2' (line 3488) [7776, 7848) 'expr' (line 3576) [7888, 7960) 'tokens' (line 3756) [8000, 8080) 'ifstates' (line 3376) [8112, 8192) 'iftokens' (line 3377) [8224, 8304) 'includetokenstack' (line 3380) [8336, 8520) 'macro' (line 3330) [8592, 8776) '<unknown>' [8848, 9032) '<unknown>' [9104, 9288) '<unknown>' [9360, 9544) '<unknown>' [9616, 9800) '<unknown>' [9872, 10056) '<unknown>' [10128, 10312) '<unknown>' [10384, 10568) '<unknown>' [10640, 10824) '<unknown>' [10896, 11088) '<unknown>' [11152, 11344) '<unknown>' [11408, 11600) '<unknown>' [11664, 11856) '<unknown>' [11920, 12112) '<unknown>' [12176, 12368) '<unknown>' [12432, 12624) '<unknown>' [12688, 12720) '<unknown>' [12752, 12784) '<unknown>' [12816, 12848) '<unknown>' [12880, 12912) '<unknown>' [12944, 12976) 'macroname' (line 3323) [13008, 13040) 'lhs' (line 3328) [13072, 13104) 'rhs' (line 3329) [13136, 13168) '<unknown>' [13200, 13232) '<unknown>' [13264, 13296) '<unknown>' [13328, 13360) '<unknown>' [13392, 13424) '<unknown>' [13456, 13488) '<unknown>' [13520, 13552) '<unknown>' [13584, 13616) '<unknown>' [13648, 13680) '<unknown>' [13712, 13744) '<unknown>' [13776, 13808) '<unknown>' [13840, 13872) '<unknown>' [13904, 13936) '<unknown>' [13968, 14000) 'std_def' (line 3349) [14032, 14064) '<unknown>' [14096, 14128) '<unknown>' [14160, 14192) '<unknown>' [14224, 14256) 'std_def' (line 3366) [14288, 14320) '<unknown>' [14352, 14384) '<unknown>' [14416, 14448) '<unknown>' [14480, 14512) '<unknown>' [14544, 14576) 'msg' (line 3426) [14608, 14640) '<unknown>' [14672, 14704) '<unknown>' [14736, 14768) '<unknown>' [14800, 14832) '<unknown>' [14864, 14896) '<unknown>' [14928, 14960) '<unknown>' [14992, 15024) 'hdr' (line 3500) [15056, 15088) '<unknown>' [15120, 15152) 'header' (line 3527) [15184, 15216) '<unknown>' [15248, 15280) '<unknown>' [15312, 15344) '<unknown>' [15376, 15408) '<unknown>' [15440, 15472) '<unknown>' [15504, 15536) '<unknown>' [15568, 15600) '<unknown>' [15632, 15664) '<unknown>' [15696, 15728) '<unknown>' [15760, 15792) 'header' (line 3623) [15824, 15856) '<unknown>' [15888, 15920) 'header2' (line 3636) [15952, 15984) '<unknown>' [16016, 16048) '<unknown>' [16080, 16112) '<unknown>' [16144, 16176) '<unknown>' [16208, 16240) 'E' (line 3670) [16272, 16304) '<unknown>' [16336, 16368) 'msg' (line 3682) [16400, 16432) '<unknown>' [16464, 16496) '<unknown>' [16528, 16560) '<unknown>' [16592, 16624) '<unknown>' [16656, 16688) '<unknown>' [16720, 16752) 's' (line 3764) [16784, 16816) '<unknown>' [16848, 16880) '<unknown>' [16912, 16944) '<unknown>' [16976, 17008) '<unknown>' [17040, 17072) '<unknown>' [17104, 17168) 'err' (line 3356) [17200, 17264) 'err' (line 3413) [17296, 17360) 'err' (line 3433) [17392, 17456) 'err' (line 3461) [17488, 17552) 'out' (line 3472) [17584, 17648) 'err' (line 3513) [17680, 17744) 'out' (line 3531) [17776, 17840) 'out' (line 3540) [17872, 17936) 'out' (line 3555) [17968, 18032) 'out' (line 3601) [18064, 18128) 'out' (line 3644) [18160, 18224) 'out' (line 3685) [18256, 18344) 'mu' (line 3785) [18384, 18600) '<unknown>' [18672, 18888) '<unknown>' [18960, 19176) '<unknown>' [19248, 19768) 'f' (line 3635) [19904, 19913) 'buf' (line 3279) [19936, 19948) 'buf' (line 3272) ```