X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fldk%2Fstructs%2FMessageSendEventsProvider.java;h=05e7e15473aea39031143ea158454c846f303b0f;hb=ffdd56c967087cba7548599934585b8a9a3102e2;hp=8458b522858ed55ae92378e496d6275018422213;hpb=64bcaa6a2a2f05653c14b9cb8bb97ab2480eaaa5;p=ldk-java diff --git a/src/main/java/org/ldk/structs/MessageSendEventsProvider.java b/src/main/java/org/ldk/structs/MessageSendEventsProvider.java index 8458b522..05e7e154 100644 --- a/src/main/java/org/ldk/structs/MessageSendEventsProvider.java +++ b/src/main/java/org/ldk/structs/MessageSendEventsProvider.java @@ -23,7 +23,19 @@ public class MessageSendEventsProvider extends CommonBase { protected void finalize() throws Throwable { if (ptr != 0) { bindings.MessageSendEventsProvider_free(ptr); } super.finalize(); } - + /** + * Destroys the object, freeing associated resources. After this call, any access + * to this object may result in a SEGFAULT or worse. + * + * You should generally NEVER call this method. You should let the garbage collector + * do this for you when it finalizes objects. However, it may be useful for types + * which represent locks and should be closed immediately to avoid holding locks + * until the GC runs. + */ + public void destroy() { + if (ptr != 0) { bindings.MessageSendEventsProvider_free(ptr); } + ptr = 0; + } public static interface MessageSendEventsProviderInterface { /** * Gets the list of pending events which were generated by previous actions, clearing the list @@ -37,7 +49,9 @@ public class MessageSendEventsProvider extends CommonBase { impl_holder.held = new MessageSendEventsProvider(new bindings.LDKMessageSendEventsProvider() { @Override public long[] get_and_clear_pending_msg_events() { MessageSendEvent[] ret = arg.get_and_clear_pending_msg_events(); - long[] result = ret != null ? Arrays.stream(ret).mapToLong(ret_conv_18 -> ret_conv_18 == null ? 0 : ret_conv_18.clone_ptr()).toArray() : null; + Reference.reachabilityFence(arg); + long[] result = ret != null ? Arrays.stream(ret).mapToLong(ret_conv_18 -> ret_conv_18.clone_ptr()).toArray() : null; + for (MessageSendEvent ret_conv_18: ret) { if (impl_holder.held != null) { impl_holder.held.ptrs_to.add(ret_conv_18); }; }; return result; } }); @@ -54,8 +68,8 @@ public class MessageSendEventsProvider extends CommonBase { MessageSendEvent[] ret_conv_18_arr = new MessageSendEvent[ret_conv_18_len]; for (int s = 0; s < ret_conv_18_len; s++) { long ret_conv_18 = ret[s]; - MessageSendEvent ret_conv_18_hu_conv = MessageSendEvent.constr_from_ptr(ret_conv_18); - ret_conv_18_hu_conv.ptrs_to.add(this); + org.ldk.structs.MessageSendEvent ret_conv_18_hu_conv = org.ldk.structs.MessageSendEvent.constr_from_ptr(ret_conv_18); + if (ret_conv_18_hu_conv != null) { ret_conv_18_hu_conv.ptrs_to.add(this); }; ret_conv_18_arr[s] = ret_conv_18_hu_conv; } return ret_conv_18_arr;