aboutsummaryrefslogtreecommitdiff
path: root/test/addons
diff options
context:
space:
mode:
Diffstat (limited to 'test/addons')
-rw-r--r--test/addons/uv-handle-leak/binding.cc9
1 files changed, 8 insertions, 1 deletions
diff --git a/test/addons/uv-handle-leak/binding.cc b/test/addons/uv-handle-leak/binding.cc
index 221a128432..1b769b141c 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<Value>& args) {