File tree Expand file tree Collapse file tree 2 files changed +19
-1
lines changed
Expand file tree Collapse file tree 2 files changed +19
-1
lines changed Original file line number Diff line number Diff line change @@ -114,7 +114,9 @@ Domino::Event Domino::newEvent(const EvName& aEvName) noexcept
114114 HID (" (Domino) init new EvName=" << aEvName << " , event=" << newEv);
115115 en_ev_[aEvName] = newEv;
116116 ev_en_[newEv] = aEvName;
117- states_.push_back (false );
117+ if (newEv >= states_.size ())
118+ states_.push_back (false ); // create new slot
119+
118120 return newEv;
119121}
120122
Original file line number Diff line number Diff line change @@ -73,9 +73,25 @@ TYPED_TEST_P(RmDomTest, GOLD_reuse_ev)
7373 EXPECT_EQ (0u , evs.count (PARA_DOM->newEvent (" e100" ))) << " REQ: recycle used-up, create new." ;
7474}
7575
76+ TYPED_TEST_P (RmDomTest, bugFix_recycleShallNotGrowInternalStateSpace)
77+ {
78+ const auto reusedEv = PARA_DOM->newEvent (" reused ev" );
79+
80+ constexpr size_t nRound = 128 ;
81+ for (size_t i = 0 ; i < nRound; ++i)
82+ {
83+ EXPECT_TRUE (PARA_DOM->rmEvOK (" reused ev" )) << " REQ: can remove existing ev each round" ;
84+ EXPECT_EQ (reusedEv, PARA_DOM->newEvent (" reused ev" )) << " REQ: shall reuse same removed ev id" ;
85+ }
86+
87+ const auto freshEv = PARA_DOM->newEvent (" fresh ev" );
88+ EXPECT_EQ (reusedEv + 1 , freshEv) << " REQ: repeated recycle shall not inflate internal event space" ;
89+ }
90+
7691REGISTER_TYPED_TEST_SUITE_P (RmDomTest
7792 , GOLD_rm_dom_resrc
7893 , GOLD_reuse_ev
94+ , bugFix_recycleShallNotGrowInternalStateSpace
7995);
8096using AnyRmDom = Types<MinRmEvDom, MaxNofreeDom, MaxDom>;
8197INSTANTIATE_TYPED_TEST_SUITE_P (PARA, RmDomTest, AnyRmDom);
You can’t perform that action at this time.
0 commit comments