Hold the created test callback in a static like a setup-time registration

This commit is contained in:
J. Nick Koston
2026-10-13 20:59:21 -10:00
parent 6b4b734a94
commit 1fcf550b95
+2 -2
View File
@@ -49,11 +49,11 @@ TEST(CallbackCreate, InlineCallableIsCalled) {
int mutable_seen = 0; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
// A pointer-sized mutable lambda used to be stored inline and run on a copy, losing its state.
// create() never frees its heap path by design; the host tests run with leak detection off.
TEST(CallbackCreate, MutableStateIsKeptAcrossCalls) {
auto counter = [n = 0](int x) mutable { mutable_seen = (n += x); };
static_assert(sizeof(counter) <= sizeof(void *) && std::is_trivially_copyable_v<decltype(counter)>);
auto cb = IntCallback::create(counter);
// create() never frees its heap path; held for the whole run like a callback registered in setup().
static const auto cb = IntCallback::create(counter);
cb.call(1);
cb.call(2);
EXPECT_EQ(mutable_seen, 3);