Skip to content

Fix non-virtual destructor in TraceDescriptors - #9117

Merged
AlexPeshkoff merged 2 commits into
FirebirdSQL:masterfrom
craftmaster1231:fix/virtual-dtor
Aug 7, 2026
Merged

Fix non-virtual destructor in TraceDescriptors#9117
AlexPeshkoff merged 2 commits into
FirebirdSQL:masterfrom
craftmaster1231:fix/virtual-dtor

Conversation

@Foxpunk

@Foxpunk Foxpunk commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Problem

TraceDescriptors declares a pure virtual method (fillParams()) and
is inherited by several derived classes (TraceDscFromValues,
TraceDscFromMsg, TraceDscFromDsc), but its destructor was not
virtual. Deleting a derived object through a TraceDescriptors*
pointer would result in undefined behavior, since the derived class's
destructor would not be called.

Fix

Added an explicit virtual ~TraceDescriptors() = default; destructor.

@sim1984

sim1984 commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

At the same time, mark fillParams in the inherited classes with the keyword override.

@Foxpunk

Foxpunk commented Aug 7, 2026

Copy link
Copy Markdown
Contributor Author

@sim1984 I added override.

@AlexPeshkoff
AlexPeshkoff merged commit 2643d1f into FirebirdSQL:master Aug 7, 2026
21 of 23 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants