From 113bee143762cd9fd2f8ab30d8536ca3f5227241 Mon Sep 17 00:00:00 2001 From: Balduin Date: Wed, 8 Jul 2026 09:07:11 +0200 Subject: [PATCH] refactor(uORB): out-line PublicationBase destructor to save flash The ~PublicationBase() destructor was header-inline, so its null-check plus the orb_get_queue_size()/unadvertise() branch was emitted at every publication destruction site (PX4 links with bfd ld, no ICF, no LTO). Move it into Publication.cpp alongside the already out-lined advertise()/publish(), mirroring #27581. Saves 2.4 kB of flash on px4_fmu-v6x_default. --- platforms/common/uORB/Publication.cpp | 10 ++++++++++ platforms/common/uORB/Publication.hpp | 10 +--------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/platforms/common/uORB/Publication.cpp b/platforms/common/uORB/Publication.cpp index b010815e6ea..4ceca227655 100644 --- a/platforms/common/uORB/Publication.cpp +++ b/platforms/common/uORB/Publication.cpp @@ -45,6 +45,16 @@ namespace uORB { +PublicationBase::~PublicationBase() +{ + if (_handle != nullptr) { + // don't automatically unadvertise queued publications (eg vehicle_command) + if (Manager::orb_get_queue_size(_handle) == 1) { + unadvertise(); + } + } +} + bool PublicationBase::advertise() { if (!advertised()) { diff --git a/platforms/common/uORB/Publication.hpp b/platforms/common/uORB/Publication.hpp index 03d274a0351..1def9c7fe3a 100644 --- a/platforms/common/uORB/Publication.hpp +++ b/platforms/common/uORB/Publication.hpp @@ -64,15 +64,7 @@ protected: PublicationBase(ORB_ID id) : _orb_id(id) {} - ~PublicationBase() - { - if (_handle != nullptr) { - // don't automatically unadvertise queued publications (eg vehicle_command) - if (Manager::orb_get_queue_size(_handle) == 1) { - unadvertise(); - } - } - } + ~PublicationBase(); // type-independent publish; data points to a message of the topic's type bool publish(const void *data);