|
FastLED 3.9.15
|
Implementation file for shared_ptr ControlBlockBase.
This file provides out-of-line definitions for ControlBlockBase's member functions to prevent UBSAN "invalid vptr" errors when shared_ptr objects cross shared library boundaries.
Problem: When tests are compiled as shared libraries (.dylib/.dll) and loaded by a runner executable, each binary gets its own copy of inline functions and vtables. UBSAN checks that the vptr matches the expected vtable when accessing members, causing false positives when the control block was created in a different binary than where it's being accessed.
Solution: By defining these functions out-of-line, each binary has its own implementation that correctly matches its own vtable. The control block operations stay within the same binary that created the control block.
Definition in file shared_ptr.cpp.hpp.
Include dependency graph for shared_ptr.cpp.hpp:
This graph shows which files directly or indirectly include this file:Go to the source code of this file.
Namespaces | |
| namespace | fl |
| Base definition for an LED controller. | |
| namespace | fl::detail |
Compile-time linker keep-alive hook for a single fl::Bus. | |