diff --git a/test/addons/uv-handle-leak/binding.cc b/test/addons/uv-handle-leak/binding.cc index 221a1284323171..1b769b141c0076 100644 --- a/test/addons/uv-handle-leak/binding.cc +++ b/test/addons/uv-handle-leak/binding.cc @@ -15,9 +15,16 @@ void CloseCallback(uv_handle_t* handle) {} class ExampleOwnerClass { public: - virtual ~ExampleOwnerClass() {} + virtual ~ExampleOwnerClass(); }; +// Do not inline this into the class, because that may remove the virtual +// table when LTO is used, and with it the symbol for which we grep the process +// output in test/abort/test-addon-uv-handle-leak. +// When the destructor is not inlined, the compiler will have to assume that it, +// and the vtable, is part of what this compilation unit exports, and keep them. +ExampleOwnerClass::~ExampleOwnerClass() {} + ExampleOwnerClass example_instance; void LeakHandle(const FunctionCallbackInfo& args) {