Skip to content

Commit 4b9600f

Browse files
committed
PendingEvent destructor clean up - properly delete typed Events in dtor ( came up in valgrind )
Signed-off-by: Rob Ambalu <robert.ambalu@point72.com>
1 parent da168b1 commit 4b9600f

2 files changed

Lines changed: 13 additions & 2 deletions

File tree

cpp/csp/engine/PendingPushEvents.cpp

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ PendingPushEvents::~PendingPushEvents()
1717
while( e )
1818
{
1919
PushEvent * next = e -> next;
20-
delete e;
20+
deleteEvent( e );
2121
e = next;
2222
}
2323
}
@@ -28,12 +28,21 @@ PendingPushEvents::~PendingPushEvents()
2828
while( e )
2929
{
3030
PushEvent * next = e -> next;
31-
delete e;
31+
deleteEvent( e );
3232
e = next;
3333
}
3434
}
3535
}
3636

37+
void PendingPushEvents::deleteEvent( PushEvent * event )
38+
{
39+
switchCspType( event -> adapter() -> dataType(),
40+
[ event ]( auto tag ) {
41+
using T = typename decltype(tag)::type;
42+
delete static_cast<TypedPushEvent<T> *>( event );
43+
} );
44+
}
45+
3746
void PendingPushEvents::addPendingEvent( PushEvent * event )
3847
{
3948
PushInputAdapter * adapter = event -> adapter();

cpp/csp/engine/PendingPushEvents.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ class PendingPushEvents
3838
//backed up input ( if we merged adaptrers into one list we would have to rescan every cycle )
3939
using UngroupedEvents = std::unordered_map<PushInputAdapter*,EventList>;
4040

41+
void deleteEvent( PushEvent * event );
42+
4143
UngroupedEvents m_ungroupedEvents;
4244
GroupEvents m_groupedEvents;
4345
};

0 commit comments

Comments
 (0)