Properly free C tuples when the inner fields are dropped
[ldk-java] / src / main / java / org / ldk / util / ThreeTuple.java
index ff63e71ff39842a952b2df724897c3be5598164f..13722658045be4d4c6029b42886539018e79e079 100644 (file)
@@ -1,6 +1,7 @@
 package org.ldk.util;
 
 public class ThreeTuple<A, B, C> {
+    private Runnable finalize_run;
     public A a;
     public B b;
     public C c;
@@ -9,4 +10,13 @@ public class ThreeTuple<A, B, C> {
         this.b = b;
         this.c = c;
     }
+    public ThreeTuple(A a, B b, C c, Runnable finalize_run) {
+        this(a, b, c);
+        this.finalize_run = finalize_run;
+    }
+    @Override
+    public void finalize() throws Throwable {
+        if (finalize_run != null) finalize_run.run();
+        super.finalize();
+    }
 }