allocation* p = NULL;
DO_ASSERT(mtx_lock(&allocation_mtx) == thrd_success);
allocation* it = allocation_ll;
- while (it->ptr != ptr) { p = it; it = it->next; }
+ while (it->ptr != ptr) {
+ p = it; it = it->next;
+ if (it == NULL) {
+ fprintf(stderr, "Tried to free unknown pointer %p at:\n", ptr);
+ void* bt[BT_MAX];
+ int bt_len = backtrace(bt, BT_MAX);
+ backtrace_symbols_fd(bt, bt_len, STDERR_FILENO);
+ fprintf(stderr, "\n\n");
+ DO_ASSERT(mtx_unlock(&allocation_mtx) == thrd_success);
+ return; // addrsan should catch malloc-unknown and print more info than we have
+ }
+ }
if (p) { p->next = it->next; } else { allocation_ll = it->next; }
DO_ASSERT(mtx_unlock(&allocation_mtx) == thrd_success);
DO_ASSERT(it->ptr == ptr);
LDKTransaction *txdata = (LDKTransaction*)MALLOC(sizeof(LDKTransaction), "LDKTransaction");
txdata->datalen = (*env)->GetArrayLength(env, bytes);
txdata->data = (uint8_t*)MALLOC(txdata->datalen, "Tx Data Bytes");
- txdata->data_is_owned = true;
+ txdata->data_is_owned = false;
(*env)->GetByteArrayRegion (env, bytes, 0, txdata->datalen, txdata->data);
return (long)txdata;
}
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_txpointer_1free (JNIEnv * env, jclass _b, jlong ptr) {
+ LDKTransaction *tx = (LDKTransaction*)ptr;
+ tx->data_is_owned = true;
+ Transaction_free(*tx);
+ FREE((void*)ptr);
+}
JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_vec_1slice_1len (JNIEnv * env, jclass _a, jlong ptr) {
- // Check offsets of a few Vec types are all consistent as we're meant to be generic across types
+ // Check offsets of a few Vec types are all consistent as we're meant to be generic across types
_Static_assert(offsetof(LDKCVec_u8Z, datalen) == offsetof(LDKCVec_SignatureZ, datalen), "Vec<*> needs to be mapped identically");
_Static_assert(offsetof(LDKCVec_u8Z, datalen) == offsetof(LDKCVec_MessageSendEventZ, datalen), "Vec<*> needs to be mapped identically");
_Static_assert(offsetof(LDKCVec_u8Z, datalen) == offsetof(LDKCVec_EventZ, datalen), "Vec<*> needs to be mapped identically");
return (long)vec->datalen;
}
JNIEXPORT long JNICALL Java_org_ldk_impl_bindings_new_1empty_1slice_1vec (JNIEnv * _env, jclass _b) {
- // Check sizes of a few Vec types are all consistent as we're meant to be generic across types
+ // Check sizes of a few Vec types are all consistent as we're meant to be generic across types
_Static_assert(sizeof(LDKCVec_u8Z) == sizeof(LDKCVec_SignatureZ), "Vec<*> needs to be mapped identically");
_Static_assert(sizeof(LDKCVec_u8Z) == sizeof(LDKCVec_MessageSendEventZ), "Vec<*> needs to be mapped identically");
_Static_assert(sizeof(LDKCVec_u8Z) == sizeof(LDKCVec_EventZ), "Vec<*> needs to be mapped identically");
LDKC2TupleTempl_usize__Transaction* ret = MALLOC(sizeof(LDKC2TupleTempl_usize__Transaction), "LDKC2TupleTempl_usize__Transaction");
ret->a = a;
LDKTransaction b_conv = *(LDKTransaction*)b;
- FREE((void*)b);
ret->b = b_conv;
return (long)ret;
}
LDKMonitorUpdateError err_var = (*val->contents.err);
CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
- long err_ref;
- if (err_var.is_owned) {
- err_ref = (long)err_var.inner | 1;
- } else {
- err_ref = (long)&err_var;
- }
+ long err_ref = (long)err_var.inner & ~1;
return err_ref;
}
JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC2TupleTempl_1OutPoint_1_1CVec_1u8Z_1new(JNIEnv *_env, jclass _b, jlong a, jbyteArray b) {
for (size_t i = 0; i < res_var.datalen; i++) {
jbyteArray arr_conv_8_arr = (*_env)->NewByteArray(_env, 64);
(*_env)->SetByteArrayRegion(_env, arr_conv_8_arr, 0, 64, res_var.data[i].compact_form);
- (*_env)->SetObjectArrayElement(_env, res_arr, i, arr_conv_8_arr);}
+ (*_env)->SetObjectArrayElement(_env, res_arr, i, arr_conv_8_arr);
+ }
return res_arr;
}
JNIEXPORT jbyte JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CVec_1SignatureZNoneZ_1get_1err (JNIEnv * _env, jclass _a, jlong arg) {
LDKPaymentSendFailure err_var = (*val->contents.err);
CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
- long err_ref;
- if (err_var.is_owned) {
- err_ref = (long)err_var.inner | 1;
- } else {
- err_ref = (long)&err_var;
- }
+ long err_ref = (long)err_var.inner & ~1;
return err_ref;
}
JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC3TupleTempl_1ChannelAnnouncement_1_1ChannelUpdate_1_1ChannelUpdate_1new(JNIEnv *_env, jclass _b, jlong a, jlong b, jlong c) {
LDKPeerHandleError err_var = (*val->contents.err);
CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
- long err_ref;
- if (err_var.is_owned) {
- err_ref = (long)err_var.inner | 1;
- } else {
- err_ref = (long)&err_var;
- }
+ long err_ref = (long)err_var.inner & ~1;
return err_ref;
}
JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC2TupleTempl_1HTLCOutputInCommitment_1_1Signature_1new(JNIEnv *_env, jclass _b, jlong a, jbyteArray b) {
LDKOutPoint outpoint_var = obj->static_output.outpoint;
CHECK((((long)outpoint_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
CHECK((((long)&outpoint_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
- long outpoint_ref;
- if (outpoint_var.is_owned) {
- outpoint_ref = (long)outpoint_var.inner | 1;
- } else {
- outpoint_ref = (long)&outpoint_var;
- }
+ long outpoint_ref = (long)outpoint_var.inner & ~1;
long output_ref = (long)&obj->static_output.output;
return (*_env)->NewObject(_env, LDKSpendableOutputDescriptor_StaticOutput_class, LDKSpendableOutputDescriptor_StaticOutput_meth, outpoint_ref, output_ref);
}
LDKOutPoint outpoint_var = obj->dynamic_output_p2wsh.outpoint;
CHECK((((long)outpoint_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
CHECK((((long)&outpoint_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
- long outpoint_ref;
- if (outpoint_var.is_owned) {
- outpoint_ref = (long)outpoint_var.inner | 1;
- } else {
- outpoint_ref = (long)&outpoint_var;
- }
+ long outpoint_ref = (long)outpoint_var.inner & ~1;
jbyteArray per_commitment_point_arr = (*_env)->NewByteArray(_env, 33);
(*_env)->SetByteArrayRegion(_env, per_commitment_point_arr, 0, 33, obj->dynamic_output_p2wsh.per_commitment_point.compressed_form);
long output_ref = (long)&obj->dynamic_output_p2wsh.output;
LDKOutPoint outpoint_var = obj->static_output_counterparty_payment.outpoint;
CHECK((((long)outpoint_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
CHECK((((long)&outpoint_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
- long outpoint_ref;
- if (outpoint_var.is_owned) {
- outpoint_ref = (long)outpoint_var.inner | 1;
- } else {
- outpoint_ref = (long)&outpoint_var;
- }
+ long outpoint_ref = (long)outpoint_var.inner & ~1;
long output_ref = (long)&obj->static_output_counterparty_payment.output;
long key_derivation_params_ref = (long)&obj->static_output_counterparty_payment.key_derivation_params;
return (*_env)->NewObject(_env, LDKSpendableOutputDescriptor_StaticOutputCounterpartyPayment_class, LDKSpendableOutputDescriptor_StaticOutputCounterpartyPayment_meth, outpoint_ref, output_ref, key_derivation_params_ref);
LDKOutPoint funding_txo_var = obj->funding_broadcast_safe.funding_txo;
CHECK((((long)funding_txo_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
CHECK((((long)&funding_txo_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
- long funding_txo_ref;
- if (funding_txo_var.is_owned) {
- funding_txo_ref = (long)funding_txo_var.inner | 1;
- } else {
- funding_txo_ref = (long)&funding_txo_var;
- }
+ long funding_txo_ref = (long)funding_txo_var.inner & ~1;
return (*_env)->NewObject(_env, LDKEvent_FundingBroadcastSafe_class, LDKEvent_FundingBroadcastSafe_meth, funding_txo_ref, obj->funding_broadcast_safe.user_channel_id);
}
case LDKEvent_PaymentReceived: {
LDKErrorMessage msg_var = obj->disconnect_peer.msg;
CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
- long msg_ref;
- if (msg_var.is_owned) {
- msg_ref = (long)msg_var.inner | 1;
- } else {
- msg_ref = (long)&msg_var;
- }
+ long msg_ref = (long)msg_var.inner & ~1;
return (*_env)->NewObject(_env, LDKErrorAction_DisconnectPeer_class, LDKErrorAction_DisconnectPeer_meth, msg_ref);
}
case LDKErrorAction_IgnoreError: {
LDKErrorMessage msg_var = obj->send_error_message.msg;
CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
- long msg_ref;
- if (msg_var.is_owned) {
- msg_ref = (long)msg_var.inner | 1;
- } else {
- msg_ref = (long)&msg_var;
- }
+ long msg_ref = (long)msg_var.inner & ~1;
return (*_env)->NewObject(_env, LDKErrorAction_SendErrorMessage_class, LDKErrorAction_SendErrorMessage_meth, msg_ref);
}
default: abort();
LDKChannelUpdate msg_var = obj->channel_update_message.msg;
CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
- long msg_ref;
- if (msg_var.is_owned) {
- msg_ref = (long)msg_var.inner | 1;
- } else {
- msg_ref = (long)&msg_var;
- }
+ long msg_ref = (long)msg_var.inner & ~1;
return (*_env)->NewObject(_env, LDKHTLCFailChannelUpdate_ChannelUpdateMessage_class, LDKHTLCFailChannelUpdate_ChannelUpdateMessage_meth, msg_ref);
}
case LDKHTLCFailChannelUpdate_ChannelClosed: {
LDKAcceptChannel msg_var = obj->send_accept_channel.msg;
CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
- long msg_ref;
- if (msg_var.is_owned) {
- msg_ref = (long)msg_var.inner | 1;
- } else {
- msg_ref = (long)&msg_var;
- }
+ long msg_ref = (long)msg_var.inner & ~1;
return (*_env)->NewObject(_env, LDKMessageSendEvent_SendAcceptChannel_class, LDKMessageSendEvent_SendAcceptChannel_meth, node_id_arr, msg_ref);
}
case LDKMessageSendEvent_SendOpenChannel: {
LDKOpenChannel msg_var = obj->send_open_channel.msg;
CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
- long msg_ref;
- if (msg_var.is_owned) {
- msg_ref = (long)msg_var.inner | 1;
- } else {
- msg_ref = (long)&msg_var;
- }
+ long msg_ref = (long)msg_var.inner & ~1;
return (*_env)->NewObject(_env, LDKMessageSendEvent_SendOpenChannel_class, LDKMessageSendEvent_SendOpenChannel_meth, node_id_arr, msg_ref);
}
case LDKMessageSendEvent_SendFundingCreated: {
LDKFundingCreated msg_var = obj->send_funding_created.msg;
CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
- long msg_ref;
- if (msg_var.is_owned) {
- msg_ref = (long)msg_var.inner | 1;
- } else {
- msg_ref = (long)&msg_var;
- }
+ long msg_ref = (long)msg_var.inner & ~1;
return (*_env)->NewObject(_env, LDKMessageSendEvent_SendFundingCreated_class, LDKMessageSendEvent_SendFundingCreated_meth, node_id_arr, msg_ref);
}
case LDKMessageSendEvent_SendFundingSigned: {
LDKFundingSigned msg_var = obj->send_funding_signed.msg;
CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
- long msg_ref;
- if (msg_var.is_owned) {
- msg_ref = (long)msg_var.inner | 1;
- } else {
- msg_ref = (long)&msg_var;
- }
+ long msg_ref = (long)msg_var.inner & ~1;
return (*_env)->NewObject(_env, LDKMessageSendEvent_SendFundingSigned_class, LDKMessageSendEvent_SendFundingSigned_meth, node_id_arr, msg_ref);
}
case LDKMessageSendEvent_SendFundingLocked: {
LDKFundingLocked msg_var = obj->send_funding_locked.msg;
CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
- long msg_ref;
- if (msg_var.is_owned) {
- msg_ref = (long)msg_var.inner | 1;
- } else {
- msg_ref = (long)&msg_var;
- }
+ long msg_ref = (long)msg_var.inner & ~1;
return (*_env)->NewObject(_env, LDKMessageSendEvent_SendFundingLocked_class, LDKMessageSendEvent_SendFundingLocked_meth, node_id_arr, msg_ref);
}
case LDKMessageSendEvent_SendAnnouncementSignatures: {
LDKAnnouncementSignatures msg_var = obj->send_announcement_signatures.msg;
CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
- long msg_ref;
- if (msg_var.is_owned) {
- msg_ref = (long)msg_var.inner | 1;
- } else {
- msg_ref = (long)&msg_var;
- }
+ long msg_ref = (long)msg_var.inner & ~1;
return (*_env)->NewObject(_env, LDKMessageSendEvent_SendAnnouncementSignatures_class, LDKMessageSendEvent_SendAnnouncementSignatures_meth, node_id_arr, msg_ref);
}
case LDKMessageSendEvent_UpdateHTLCs: {
LDKCommitmentUpdate updates_var = obj->update_htl_cs.updates;
CHECK((((long)updates_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
CHECK((((long)&updates_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
- long updates_ref;
- if (updates_var.is_owned) {
- updates_ref = (long)updates_var.inner | 1;
- } else {
- updates_ref = (long)&updates_var;
- }
+ long updates_ref = (long)updates_var.inner & ~1;
return (*_env)->NewObject(_env, LDKMessageSendEvent_UpdateHTLCs_class, LDKMessageSendEvent_UpdateHTLCs_meth, node_id_arr, updates_ref);
}
case LDKMessageSendEvent_SendRevokeAndACK: {
LDKRevokeAndACK msg_var = obj->send_revoke_and_ack.msg;
CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
- long msg_ref;
- if (msg_var.is_owned) {
- msg_ref = (long)msg_var.inner | 1;
- } else {
- msg_ref = (long)&msg_var;
- }
+ long msg_ref = (long)msg_var.inner & ~1;
return (*_env)->NewObject(_env, LDKMessageSendEvent_SendRevokeAndACK_class, LDKMessageSendEvent_SendRevokeAndACK_meth, node_id_arr, msg_ref);
}
case LDKMessageSendEvent_SendClosingSigned: {
LDKClosingSigned msg_var = obj->send_closing_signed.msg;
CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
- long msg_ref;
- if (msg_var.is_owned) {
- msg_ref = (long)msg_var.inner | 1;
- } else {
- msg_ref = (long)&msg_var;
- }
+ long msg_ref = (long)msg_var.inner & ~1;
return (*_env)->NewObject(_env, LDKMessageSendEvent_SendClosingSigned_class, LDKMessageSendEvent_SendClosingSigned_meth, node_id_arr, msg_ref);
}
case LDKMessageSendEvent_SendShutdown: {
LDKShutdown msg_var = obj->send_shutdown.msg;
CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
- long msg_ref;
- if (msg_var.is_owned) {
- msg_ref = (long)msg_var.inner | 1;
- } else {
- msg_ref = (long)&msg_var;
- }
+ long msg_ref = (long)msg_var.inner & ~1;
return (*_env)->NewObject(_env, LDKMessageSendEvent_SendShutdown_class, LDKMessageSendEvent_SendShutdown_meth, node_id_arr, msg_ref);
}
case LDKMessageSendEvent_SendChannelReestablish: {
LDKChannelReestablish msg_var = obj->send_channel_reestablish.msg;
CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
- long msg_ref;
- if (msg_var.is_owned) {
- msg_ref = (long)msg_var.inner | 1;
- } else {
- msg_ref = (long)&msg_var;
- }
+ long msg_ref = (long)msg_var.inner & ~1;
return (*_env)->NewObject(_env, LDKMessageSendEvent_SendChannelReestablish_class, LDKMessageSendEvent_SendChannelReestablish_meth, node_id_arr, msg_ref);
}
case LDKMessageSendEvent_BroadcastChannelAnnouncement: {
LDKChannelAnnouncement msg_var = obj->broadcast_channel_announcement.msg;
CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
- long msg_ref;
- if (msg_var.is_owned) {
- msg_ref = (long)msg_var.inner | 1;
- } else {
- msg_ref = (long)&msg_var;
- }
+ long msg_ref = (long)msg_var.inner & ~1;
LDKChannelUpdate update_msg_var = obj->broadcast_channel_announcement.update_msg;
CHECK((((long)update_msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
CHECK((((long)&update_msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
- long update_msg_ref;
- if (update_msg_var.is_owned) {
- update_msg_ref = (long)update_msg_var.inner | 1;
- } else {
- update_msg_ref = (long)&update_msg_var;
- }
+ long update_msg_ref = (long)update_msg_var.inner & ~1;
return (*_env)->NewObject(_env, LDKMessageSendEvent_BroadcastChannelAnnouncement_class, LDKMessageSendEvent_BroadcastChannelAnnouncement_meth, msg_ref, update_msg_ref);
}
case LDKMessageSendEvent_BroadcastNodeAnnouncement: {
LDKNodeAnnouncement msg_var = obj->broadcast_node_announcement.msg;
CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
- long msg_ref;
- if (msg_var.is_owned) {
- msg_ref = (long)msg_var.inner | 1;
- } else {
- msg_ref = (long)&msg_var;
- }
+ long msg_ref = (long)msg_var.inner & ~1;
return (*_env)->NewObject(_env, LDKMessageSendEvent_BroadcastNodeAnnouncement_class, LDKMessageSendEvent_BroadcastNodeAnnouncement_meth, msg_ref);
}
case LDKMessageSendEvent_BroadcastChannelUpdate: {
LDKChannelUpdate msg_var = obj->broadcast_channel_update.msg;
CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
- long msg_ref;
- if (msg_var.is_owned) {
- msg_ref = (long)msg_var.inner | 1;
- } else {
- msg_ref = (long)&msg_var;
- }
+ long msg_ref = (long)msg_var.inner & ~1;
return (*_env)->NewObject(_env, LDKMessageSendEvent_BroadcastChannelUpdate_class, LDKMessageSendEvent_BroadcastChannelUpdate_meth, msg_ref);
}
case LDKMessageSendEvent_HandleError: {
jlongArray ret_arr = (*_env)->NewLongArray(_env, ret_var.datalen);
jlong *ret_arr_ptr = (*_env)->GetPrimitiveArrayCritical(_env, ret_arr, NULL);
for (size_t s = 0; s < ret_var.datalen; s++) {
- long arr_conv_18_ref = (long)&ret_var.data[s];
+ LDKMessageSendEvent *arr_conv_18_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
+ *arr_conv_18_copy = MessageSendEvent_clone(&ret_var.data[s]);
+ long arr_conv_18_ref = (long)arr_conv_18_copy;
ret_arr_ptr[s] = arr_conv_18_ref;
}
(*_env)->ReleasePrimitiveArrayCritical(_env, ret_arr, ret_arr_ptr, 0);
+ CVec_MessageSendEventZ_free(ret_var);
return ret_arr;
}
jlongArray ret_arr = (*_env)->NewLongArray(_env, ret_var.datalen);
jlong *ret_arr_ptr = (*_env)->GetPrimitiveArrayCritical(_env, ret_arr, NULL);
for (size_t h = 0; h < ret_var.datalen; h++) {
- long arr_conv_7_ref = (long)&ret_var.data[h];
+ LDKEvent *arr_conv_7_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
+ *arr_conv_7_copy = Event_clone(&ret_var.data[h]);
+ long arr_conv_7_ref = (long)arr_conv_7_copy;
ret_arr_ptr[h] = arr_conv_7_ref;
}
(*_env)->ReleasePrimitiveArrayCritical(_env, ret_arr, ret_arr_ptr, 0);
+ CVec_EventZ_free(ret_var);
return ret_arr;
}
LDKChannelKeys_JCalls *j_calls = (LDKChannelKeys_JCalls*) this_arg;
JNIEnv *_env;
DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&_env, JNI_VERSION_1_8) == JNI_OK);
- long commitment_tx_ref = (long)&commitment_tx;
+ LDKTransaction *commitment_tx_copy = MALLOC(sizeof(LDKTransaction), "LDKTransaction");
+ *commitment_tx_copy = commitment_tx;
+ long commitment_tx_ref = (long)commitment_tx_copy;
LDKCVec_HTLCOutputInCommitmentZ htlcs_var = htlcs;
jlongArray htlcs_arr = (*_env)->NewLongArray(_env, htlcs_var.datalen);
jlong *htlcs_arr_ptr = (*_env)->GetPrimitiveArrayCritical(_env, htlcs_arr, NULL);
if (arr_conv_24_var.is_owned) {
arr_conv_24_ref = (long)arr_conv_24_var.inner | 1;
} else {
- arr_conv_24_ref = (long)&arr_conv_24_var;
+ arr_conv_24_ref = (long)arr_conv_24_var.inner & ~1;
}
htlcs_arr_ptr[y] = arr_conv_24_ref;
}
LDKChannelKeys_JCalls *j_calls = (LDKChannelKeys_JCalls*) this_arg;
JNIEnv *_env;
DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&_env, JNI_VERSION_1_8) == JNI_OK);
- long justice_tx_ref = (long)&justice_tx;
+ LDKTransaction *justice_tx_copy = MALLOC(sizeof(LDKTransaction), "LDKTransaction");
+ *justice_tx_copy = justice_tx;
+ long justice_tx_ref = (long)justice_tx_copy;
jbyteArray per_commitment_key_arr = (*_env)->NewByteArray(_env, 32);
(*_env)->SetByteArrayRegion(_env, per_commitment_key_arr, 0, 32, *per_commitment_key);
jobject obj = (*_env)->NewLocalRef(_env, j_calls->o);
LDKChannelKeys_JCalls *j_calls = (LDKChannelKeys_JCalls*) this_arg;
JNIEnv *_env;
DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&_env, JNI_VERSION_1_8) == JNI_OK);
- long htlc_tx_ref = (long)&htlc_tx;
+ LDKTransaction *htlc_tx_copy = MALLOC(sizeof(LDKTransaction), "LDKTransaction");
+ *htlc_tx_copy = htlc_tx;
+ long htlc_tx_ref = (long)htlc_tx_copy;
jbyteArray per_commitment_point_arr = (*_env)->NewByteArray(_env, 33);
(*_env)->SetByteArrayRegion(_env, per_commitment_point_arr, 0, 33, per_commitment_point.compressed_form);
jobject obj = (*_env)->NewLocalRef(_env, j_calls->o);
LDKChannelKeys_JCalls *j_calls = (LDKChannelKeys_JCalls*) this_arg;
JNIEnv *_env;
DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&_env, JNI_VERSION_1_8) == JNI_OK);
- long closing_tx_ref = (long)&closing_tx;
+ LDKTransaction *closing_tx_copy = MALLOC(sizeof(LDKTransaction), "LDKTransaction");
+ *closing_tx_copy = closing_tx;
+ long closing_tx_ref = (long)closing_tx_copy;
jobject obj = (*_env)->NewLocalRef(_env, j_calls->o);
CHECK(obj != NULL);
LDKCResult_SignatureNoneZ* ret = (LDKCResult_SignatureNoneZ*)(*_env)->CallLongMethod(_env, obj, j_calls->sign_closing_transaction_meth, closing_tx_ref);
atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
return (void*) this_arg;
}
-static inline LDKChannelKeys LDKChannelKeys_init (JNIEnv * env, jclass _a, jobject o) {
+static inline LDKChannelKeys LDKChannelKeys_init (JNIEnv * env, jclass _a, jobject o, jlong pubkeys) {
jclass c = (*env)->GetObjectClass(env, o);
CHECK(c != NULL);
LDKChannelKeys_JCalls *calls = MALLOC(sizeof(LDKChannelKeys_JCalls), "LDKChannelKeys_JCalls");
calls->on_accept_meth = (*env)->GetMethodID(env, c, "on_accept", "(JSS)V");
CHECK(calls->on_accept_meth != NULL);
+ LDKChannelPublicKeys pubkeys_conv;
+ pubkeys_conv.inner = (void*)(pubkeys & (~1));
+ pubkeys_conv.is_owned = (pubkeys & 1) || (pubkeys == 0);
+ if (pubkeys_conv.inner != NULL)
+ pubkeys_conv = ChannelPublicKeys_clone(&pubkeys_conv);
+
LDKChannelKeys ret = {
.this_arg = (void*) calls,
.get_per_commitment_point = get_per_commitment_point_jcall,
.on_accept = on_accept_jcall,
.clone = LDKChannelKeys_JCalls_clone,
.free = LDKChannelKeys_JCalls_free,
+ .pubkeys = pubkeys_conv,
+ .set_pubkeys = NULL,
};
return ret;
}
-JNIEXPORT long JNICALL Java_org_ldk_impl_bindings_LDKChannelKeys_1new (JNIEnv * env, jclass _a, jobject o) {
+JNIEXPORT long JNICALL Java_org_ldk_impl_bindings_LDKChannelKeys_1new (JNIEnv * env, jclass _a, jobject o, jlong pubkeys) {
LDKChannelKeys *res_ptr = MALLOC(sizeof(LDKChannelKeys), "LDKChannelKeys");
- *res_ptr = LDKChannelKeys_init(env, _a, o);
+ *res_ptr = LDKChannelKeys_init(env, _a, o, pubkeys);
return (long)res_ptr;
}
JNIEXPORT jobject JNICALL Java_org_ldk_impl_bindings_LDKChannelKeys_1get_1obj_1from_1jcalls (JNIEnv * env, jclass _a, jlong val) {
JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelKeys_1sign_1counterparty_1commitment(JNIEnv * _env, jclass _b, jlong this_arg, jint feerate_per_kw, jlong commitment_tx, jlong keys, jlongArray htlcs) {
LDKChannelKeys* this_arg_conv = (LDKChannelKeys*)this_arg;
LDKTransaction commitment_tx_conv = *(LDKTransaction*)commitment_tx;
- FREE((void*)commitment_tx);
LDKPreCalculatedTxCreationKeys keys_conv;
keys_conv.inner = (void*)(keys & (~1));
keys_conv.is_owned = (keys & 1) || (keys == 0);
JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelKeys_1sign_1justice_1transaction(JNIEnv * _env, jclass _b, jlong this_arg, jlong justice_tx, jlong input, jlong amount, jbyteArray per_commitment_key, jlong htlc) {
LDKChannelKeys* this_arg_conv = (LDKChannelKeys*)this_arg;
LDKTransaction justice_tx_conv = *(LDKTransaction*)justice_tx;
- FREE((void*)justice_tx);
unsigned char per_commitment_key_arr[32];
CHECK((*_env)->GetArrayLength (_env, per_commitment_key) == 32);
(*_env)->GetByteArrayRegion (_env, per_commitment_key, 0, 32, per_commitment_key_arr);
JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelKeys_1sign_1counterparty_1htlc_1transaction(JNIEnv * _env, jclass _b, jlong this_arg, jlong htlc_tx, jlong input, jlong amount, jbyteArray per_commitment_point, jlong htlc) {
LDKChannelKeys* this_arg_conv = (LDKChannelKeys*)this_arg;
LDKTransaction htlc_tx_conv = *(LDKTransaction*)htlc_tx;
- FREE((void*)htlc_tx);
LDKPublicKey per_commitment_point_ref;
CHECK((*_env)->GetArrayLength (_env, per_commitment_point) == 33);
(*_env)->GetByteArrayRegion (_env, per_commitment_point, 0, 33, per_commitment_point_ref.compressed_form);
JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelKeys_1sign_1closing_1transaction(JNIEnv * _env, jclass _b, jlong this_arg, jlong closing_tx) {
LDKChannelKeys* this_arg_conv = (LDKChannelKeys*)this_arg;
LDKTransaction closing_tx_conv = *(LDKTransaction*)closing_tx;
- FREE((void*)closing_tx);
LDKCResult_SignatureNoneZ* ret = MALLOC(sizeof(LDKCResult_SignatureNoneZ), "LDKCResult_SignatureNoneZ");
*ret = (this_arg_conv->sign_closing_transaction)(this_arg_conv->this_arg, closing_tx_conv);
return (long)ret;
(this_arg_conv->on_accept)(this_arg_conv->this_arg, &channel_points_conv, counterparty_selected_contest_delay, holder_selected_contest_delay);
}
+LDKChannelPublicKeys LDKChannelKeys_set_get_pubkeys(LDKChannelKeys* this_arg) {
+ if (this_arg->set_pubkeys != NULL)
+ this_arg->set_pubkeys(this_arg);
+ return this_arg->pubkeys;
+}
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelKeys_1get_1pubkeys(JNIEnv * _env, jclass _b, jlong this_arg) {
+ LDKChannelKeys* this_arg_conv = (LDKChannelKeys*)this_arg;
+ LDKChannelPublicKeys ret = LDKChannelKeys_set_get_pubkeys(this_arg_conv);
+ return ((long)ret.inner) | (ret.is_owned ? 1 : 0);
+}
+
JNIEXPORT jlongArray JNICALL Java_org_ldk_impl_bindings_LDKCVecTempl_1MonitorEvent_1arr_1info(JNIEnv *env, jclass _b, jlong ptr) {
LDKCVecTempl_MonitorEvent *vec = (LDKCVecTempl_MonitorEvent*)ptr;
jlongArray ret = (*env)->NewLongArray(env, vec->datalen);
if (funding_txo_var.is_owned) {
funding_txo_ref = (long)funding_txo_var.inner | 1;
} else {
- funding_txo_ref = (long)&funding_txo_var;
+ funding_txo_ref = (long)funding_txo_var.inner & ~1;
}
LDKChannelMonitor monitor_var = monitor;
CHECK((((long)monitor_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
if (monitor_var.is_owned) {
monitor_ref = (long)monitor_var.inner | 1;
} else {
- monitor_ref = (long)&monitor_var;
+ monitor_ref = (long)monitor_var.inner & ~1;
}
jobject obj = (*_env)->NewLocalRef(_env, j_calls->o);
CHECK(obj != NULL);
if (funding_txo_var.is_owned) {
funding_txo_ref = (long)funding_txo_var.inner | 1;
} else {
- funding_txo_ref = (long)&funding_txo_var;
+ funding_txo_ref = (long)funding_txo_var.inner & ~1;
}
LDKChannelMonitorUpdate update_var = update;
CHECK((((long)update_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
if (update_var.is_owned) {
update_ref = (long)update_var.inner | 1;
} else {
- update_ref = (long)&update_var;
+ update_ref = (long)update_var.inner & ~1;
}
jobject obj = (*_env)->NewLocalRef(_env, j_calls->o);
CHECK(obj != NULL);
if (arr_conv_14_var.is_owned) {
arr_conv_14_ref = (long)arr_conv_14_var.inner | 1;
} else {
- arr_conv_14_ref = (long)&arr_conv_14_var;
+ arr_conv_14_ref = (long)arr_conv_14_var.inner & ~1;
}
ret_arr_ptr[o] = arr_conv_14_ref;
}
LDKBroadcasterInterface_JCalls *j_calls = (LDKBroadcasterInterface_JCalls*) this_arg;
JNIEnv *_env;
DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&_env, JNI_VERSION_1_8) == JNI_OK);
- long tx_ref = (long)&tx;
+ LDKTransaction *tx_copy = MALLOC(sizeof(LDKTransaction), "LDKTransaction");
+ *tx_copy = tx;
+ long tx_ref = (long)tx_copy;
jobject obj = (*_env)->NewLocalRef(_env, j_calls->o);
CHECK(obj != NULL);
return (*_env)->CallVoidMethod(_env, obj, j_calls->broadcast_transaction_meth, tx_ref);
JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_BroadcasterInterface_1broadcast_1transaction(JNIEnv * _env, jclass _b, jlong this_arg, jlong tx) {
LDKBroadcasterInterface* this_arg_conv = (LDKBroadcasterInterface*)this_arg;
LDKTransaction tx_conv = *(LDKTransaction*)tx;
- FREE((void*)tx);
(this_arg_conv->broadcast_transaction)(this_arg_conv->this_arg, tx_conv);
}
for (size_t i = 0; i < ret->datalen; i++) {
jlong arr_elem = java_elems[i];
LDKTransaction arr_elem_conv = *(LDKTransaction*)arr_elem;
- FREE((void*)arr_elem);
ret->data[i] = arr_elem_conv;
}
(*env)->ReleasePrimitiveArrayCritical(env, elems, java_elems, 0);
LDKCVec_u8Z arg_var = (this_arg_conv->get_destination_script)(this_arg_conv->this_arg);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
if (their_features_var.is_owned) {
their_features_ref = (long)their_features_var.inner | 1;
} else {
- their_features_ref = (long)&their_features_var;
+ their_features_ref = (long)their_features_var.inner & ~1;
}
jobject obj = (*_env)->NewLocalRef(_env, j_calls->o);
CHECK(obj != NULL);
if (their_features_var.is_owned) {
their_features_ref = (long)their_features_var.inner | 1;
} else {
- their_features_ref = (long)&their_features_var;
+ their_features_ref = (long)their_features_var.inner & ~1;
}
jobject obj = (*_env)->NewLocalRef(_env, j_calls->o);
CHECK(obj != NULL);
LDKLightningError err_var = (*val->contents.err);
CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
- long err_ref;
- if (err_var.is_owned) {
- err_ref = (long)err_var.inner | 1;
- } else {
- err_ref = (long)&err_var;
- }
+ long err_ref = (long)err_var.inner & ~1;
return err_ref;
}
JNIEXPORT jobject JNICALL Java_org_ldk_impl_bindings_LDKCVecTempl_1C3TupleTempl_1ChannelAnnouncement_1_1ChannelUpdate_1_1ChannelUpdate_1arr_1info(JNIEnv *env, jclass _b, jlong ptr) {
jlongArray ret_arr = (*_env)->NewLongArray(_env, ret_var.datalen);
jlong *ret_arr_ptr = (*_env)->GetPrimitiveArrayCritical(_env, ret_arr, NULL);
for (size_t l = 0; l < ret_var.datalen; l++) {
- long arr_conv_63_ref = (long)&ret_var.data[l];
+ /*XXX False */long arr_conv_63_ref = (long)&ret_var.data[l];
ret_arr_ptr[l] = arr_conv_63_ref;
}
(*_env)->ReleasePrimitiveArrayCritical(_env, ret_arr, ret_arr_ptr, 0);
+ CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(ret_var);
return ret_arr;
}
if (arr_conv_18_var.is_owned) {
arr_conv_18_ref = (long)arr_conv_18_var.inner | 1;
} else {
- arr_conv_18_ref = (long)&arr_conv_18_var;
+ arr_conv_18_ref = (long)arr_conv_18_var.inner & ~1;
}
ret_arr_ptr[s] = arr_conv_18_ref;
}
LDKPeerHandleError err_var = (*val->contents.err);
CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
- long err_ref;
- if (err_var.is_owned) {
- err_ref = (long)err_var.inner | 1;
- } else {
- err_ref = (long)&err_var;
- }
+ long err_ref = (long)err_var.inner & ~1;
return err_ref;
}
JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1boolPeerHandleErrorZ_1result_1ok (JNIEnv * env, jclass _a, jlong arg) {
LDKPeerHandleError err_var = (*val->contents.err);
CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
- long err_ref;
- if (err_var.is_owned) {
- err_ref = (long)err_var.inner | 1;
- } else {
- err_ref = (long)&err_var;
- }
+ long err_ref = (long)err_var.inner & ~1;
return err_ref;
}
JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1SecretKeySecpErrorZ_1result_1ok (JNIEnv * env, jclass _a, jlong arg) {
LDKTxCreationKeys res_var = (*val->contents.result);
CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
- long res_ref;
- if (res_var.is_owned) {
- res_ref = (long)res_var.inner | 1;
- } else {
- res_ref = (long)&res_var;
- }
+ long res_ref = (long)res_var.inner & ~1;
return res_ref;
}
JNIEXPORT jclass JNICALL Java_org_ldk_impl_bindings_LDKCResult_1TxCreationKeysSecpErrorZ_1get_1err (JNIEnv * _env, jclass _a, jlong arg) {
LDKRoute res_var = (*val->contents.result);
CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
- long res_ref;
- if (res_var.is_owned) {
- res_ref = (long)res_var.inner | 1;
- } else {
- res_ref = (long)&res_var;
- }
+ long res_ref = (long)res_var.inner & ~1;
return res_ref;
}
JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1RouteLightningErrorZ_1get_1err (JNIEnv * _env, jclass _a, jlong arg) {
LDKLightningError err_var = (*val->contents.err);
CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
- long err_ref;
- if (err_var.is_owned) {
- err_ref = (long)err_var.inner | 1;
- } else {
- err_ref = (long)&err_var;
- }
+ long err_ref = (long)err_var.inner & ~1;
return err_ref;
}
JNIEXPORT jlongArray JNICALL Java_org_ldk_impl_bindings_LDKCVecTempl_1RouteHint_1arr_1info(JNIEnv *env, jclass _b, jlong ptr) {
for (size_t n = 0; n < arg_constr.datalen; n++) {
long arr_conv_13 = arg_vals[n];
LDKTransaction arr_conv_13_conv = *(LDKTransaction*)arr_conv_13;
- FREE((void*)arr_conv_13);
arg_constr.data[n] = arr_conv_13_conv;
}
(*_env)->ReleaseLongArrayElements (_env, arg, arg_vals, 0);
JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Transaction_1free(JNIEnv * _env, jclass _b, jlong _res) {
LDKTransaction _res_conv = *(LDKTransaction*)_res;
- FREE((void*)_res);
Transaction_free(_res_conv);
}
JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_C2Tuple_1usizeTransactionZ_1new(JNIEnv * _env, jclass _b, jlong a, jlong b) {
LDKTransaction b_conv = *(LDKTransaction*)b;
- FREE((void*)b);
LDKC2Tuple_usizeTransactionZ* ret = MALLOC(sizeof(LDKC2Tuple_usizeTransactionZ), "LDKC2Tuple_usizeTransactionZ");
*ret = C2Tuple_usizeTransactionZ_new(a, b_conv);
return (long)ret;
Event_free(this_ptr_conv);
}
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Event_1clone(JNIEnv * _env, jclass _b, jlong orig) {
+ LDKEvent* orig_conv = (LDKEvent*)orig;
+ LDKEvent* ret = MALLOC(sizeof(LDKEvent), "LDKEvent");
+ *ret = Event_clone(orig_conv);
+ return (long)ret;
+}
+
JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_MessageSendEvent_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
LDKMessageSendEvent this_ptr_conv = *(LDKMessageSendEvent*)this_ptr;
FREE((void*)this_ptr);
MessageSendEvent_free(this_ptr_conv);
}
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_MessageSendEvent_1clone(JNIEnv * _env, jclass _b, jlong orig) {
+ LDKMessageSendEvent* orig_conv = (LDKMessageSendEvent*)orig;
+ LDKMessageSendEvent* ret = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent");
+ *ret = MessageSendEvent_clone(orig_conv);
+ return (long)ret;
+}
+
JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_MessageSendEventsProvider_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
LDKMessageSendEventsProvider this_ptr_conv = *(LDKMessageSendEventsProvider*)this_ptr;
FREE((void*)this_ptr);
APIError_free(this_ptr_conv);
}
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_APIError_1clone(JNIEnv * _env, jclass _b, jlong orig) {
+ LDKAPIError* orig_conv = (LDKAPIError*)orig;
+ LDKAPIError* ret = MALLOC(sizeof(LDKAPIError), "LDKAPIError");
+ *ret = APIError_clone(orig_conv);
+ return (long)ret;
+}
+
+JNIEXPORT jclass JNICALL Java_org_ldk_impl_bindings_Level_1clone(JNIEnv * _env, jclass _b, jlong orig) {
+ LDKLevel* orig_conv = (LDKLevel*)orig;
+ jclass ret = LDKLevel_to_java(_env, Level_clone(orig_conv));
+ return ret;
+}
+
JNIEXPORT jclass JNICALL Java_org_ldk_impl_bindings_Level_1max(JNIEnv * _env, jclass _b) {
jclass ret = LDKLevel_to_java(_env, Level_max());
return ret;
LDKCVec_u8Z arg_var = ChannelConfig_write(&obj_conv);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
return ((long)ret.inner) | (ret.is_owned ? 1 : 0);
}
+JNIEXPORT jclass JNICALL Java_org_ldk_impl_bindings_AccessError_1clone(JNIEnv * _env, jclass _b, jlong orig) {
+ LDKAccessError* orig_conv = (LDKAccessError*)orig;
+ jclass ret = LDKAccessError_to_java(_env, AccessError_clone(orig_conv));
+ return ret;
+}
+
JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Access_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
LDKAccess this_ptr_conv = *(LDKAccess*)this_ptr;
FREE((void*)this_ptr);
BroadcasterInterface_free(this_ptr_conv);
}
+JNIEXPORT jclass JNICALL Java_org_ldk_impl_bindings_ConfirmationTarget_1clone(JNIEnv * _env, jclass _b, jlong orig) {
+ LDKConfirmationTarget* orig_conv = (LDKConfirmationTarget*)orig;
+ jclass ret = LDKConfirmationTarget_to_java(_env, ConfirmationTarget_clone(orig_conv));
+ return ret;
+}
+
JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FeeEstimator_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
LDKFeeEstimator this_ptr_conv = *(LDKFeeEstimator*)this_ptr;
FREE((void*)this_ptr);
LDKCVec_u8Z arg_var = ChannelMonitorUpdate_write(&obj_conv);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
return ((long)ret.inner) | (ret.is_owned ? 1 : 0);
}
+JNIEXPORT jclass JNICALL Java_org_ldk_impl_bindings_ChannelMonitorUpdateErr_1clone(JNIEnv * _env, jclass _b, jlong orig) {
+ LDKChannelMonitorUpdateErr* orig_conv = (LDKChannelMonitorUpdateErr*)orig;
+ jclass ret = LDKChannelMonitorUpdateErr_to_java(_env, ChannelMonitorUpdateErr_clone(orig_conv));
+ return ret;
+}
+
JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_MonitorUpdateError_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
LDKMonitorUpdateError this_ptr_conv;
this_ptr_conv.inner = (void*)(this_ptr & (~1));
LDKCVec_u8Z arg_var = HTLCUpdate_write(&obj_conv);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
if (arr_conv_14_var.is_owned) {
arr_conv_14_ref = (long)arr_conv_14_var.inner | 1;
} else {
- arr_conv_14_ref = (long)&arr_conv_14_var;
+ arr_conv_14_ref = (long)arr_conv_14_var.inner & ~1;
}
ret_arr_ptr[o] = arr_conv_14_ref;
}
jlongArray ret_arr = (*_env)->NewLongArray(_env, ret_var.datalen);
jlong *ret_arr_ptr = (*_env)->GetPrimitiveArrayCritical(_env, ret_arr, NULL);
for (size_t h = 0; h < ret_var.datalen; h++) {
- long arr_conv_7_ref = (long)&ret_var.data[h];
+ LDKEvent *arr_conv_7_copy = MALLOC(sizeof(LDKEvent), "LDKEvent");
+ *arr_conv_7_copy = Event_clone(&ret_var.data[h]);
+ long arr_conv_7_ref = (long)arr_conv_7_copy;
ret_arr_ptr[h] = arr_conv_7_ref;
}
(*_env)->ReleasePrimitiveArrayCritical(_env, ret_arr, ret_arr_ptr, 0);
+ CVec_EventZ_free(ret_var);
return ret_arr;
}
jlongArray ret_arr = (*_env)->NewLongArray(_env, ret_var.datalen);
jlong *ret_arr_ptr = (*_env)->GetPrimitiveArrayCritical(_env, ret_arr, NULL);
for (size_t n = 0; n < ret_var.datalen; n++) {
- long arr_conv_13_ref = (long)&ret_var.data[n];
+ LDKTransaction *arr_conv_13_copy = MALLOC(sizeof(LDKTransaction), "LDKTransaction");
+ *arr_conv_13_copy = ret_var.data[n];
+ long arr_conv_13_ref = (long)arr_conv_13_copy;
ret_arr_ptr[n] = arr_conv_13_ref;
}
(*_env)->ReleasePrimitiveArrayCritical(_env, ret_arr, ret_arr_ptr, 0);
+ CVec_TransactionZ_free(ret_var);
return ret_arr;
}
jlongArray ret_arr = (*_env)->NewLongArray(_env, ret_var.datalen);
jlong *ret_arr_ptr = (*_env)->GetPrimitiveArrayCritical(_env, ret_arr, NULL);
for (size_t b = 0; b < ret_var.datalen; b++) {
- long arr_conv_27_ref = (long)&ret_var.data[b];
+ /*XXX False */long arr_conv_27_ref = (long)&ret_var.data[b];
ret_arr_ptr[b] = arr_conv_27_ref;
}
(*_env)->ReleasePrimitiveArrayCritical(_env, ret_arr, ret_arr_ptr, 0);
+ CVec_C2Tuple_TxidCVec_TxOutZZZ_free(ret_var);
return ret_arr;
}
LDKCVec_u8Z arg_var = OutPoint_write(&obj_conv);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
SpendableOutputDescriptor_free(this_ptr_conv);
}
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_SpendableOutputDescriptor_1clone(JNIEnv * _env, jclass _b, jlong orig) {
+ LDKSpendableOutputDescriptor* orig_conv = (LDKSpendableOutputDescriptor*)orig;
+ LDKSpendableOutputDescriptor* ret = MALLOC(sizeof(LDKSpendableOutputDescriptor), "LDKSpendableOutputDescriptor");
+ *ret = SpendableOutputDescriptor_clone(orig_conv);
+ return (long)ret;
+}
+
JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelKeys_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
LDKChannelKeys this_ptr_conv = *(LDKChannelKeys*)this_ptr;
FREE((void*)this_ptr);
LDKCVec_u8Z arg_var = InMemoryChannelKeys_write(&obj_conv);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
if (arr_conv_16_var.is_owned) {
arr_conv_16_ref = (long)arr_conv_16_var.inner | 1;
} else {
- arr_conv_16_ref = (long)&arr_conv_16_var;
+ arr_conv_16_ref = (long)arr_conv_16_var.inner & ~1;
}
ret_arr_ptr[q] = arr_conv_16_ref;
}
if (arr_conv_16_var.is_owned) {
arr_conv_16_ref = (long)arr_conv_16_var.inner | 1;
} else {
- arr_conv_16_ref = (long)&arr_conv_16_var;
+ arr_conv_16_ref = (long)arr_conv_16_var.inner & ~1;
}
ret_arr_ptr[q] = arr_conv_16_ref;
}
NetAddress_free(this_ptr_conv);
}
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NetAddress_1clone(JNIEnv * _env, jclass _b, jlong orig) {
+ LDKNetAddress* orig_conv = (LDKNetAddress*)orig;
+ LDKNetAddress* ret = MALLOC(sizeof(LDKNetAddress), "LDKNetAddress");
+ *ret = NetAddress_clone(orig_conv);
+ return (long)ret;
+}
+
JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedNodeAnnouncement_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
LDKUnsignedNodeAnnouncement this_ptr_conv;
this_ptr_conv.inner = (void*)(this_ptr & (~1));
ErrorAction_free(this_ptr_conv);
}
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ErrorAction_1clone(JNIEnv * _env, jclass _b, jlong orig) {
+ LDKErrorAction* orig_conv = (LDKErrorAction*)orig;
+ LDKErrorAction* ret = MALLOC(sizeof(LDKErrorAction), "LDKErrorAction");
+ *ret = ErrorAction_clone(orig_conv);
+ return (long)ret;
+}
+
JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LightningError_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
LDKLightningError this_ptr_conv;
this_ptr_conv.inner = (void*)(this_ptr & (~1));
HTLCFailChannelUpdate_free(this_ptr_conv);
}
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_HTLCFailChannelUpdate_1clone(JNIEnv * _env, jclass _b, jlong orig) {
+ LDKHTLCFailChannelUpdate* orig_conv = (LDKHTLCFailChannelUpdate*)orig;
+ LDKHTLCFailChannelUpdate* ret = MALLOC(sizeof(LDKHTLCFailChannelUpdate), "LDKHTLCFailChannelUpdate");
+ *ret = HTLCFailChannelUpdate_clone(orig_conv);
+ return (long)ret;
+}
+
JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1free(JNIEnv * _env, jclass _b, jlong this_ptr) {
LDKChannelMessageHandler this_ptr_conv = *(LDKChannelMessageHandler*)this_ptr;
FREE((void*)this_ptr);
LDKCVec_u8Z arg_var = AcceptChannel_write(&obj_conv);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
LDKCVec_u8Z arg_var = AnnouncementSignatures_write(&obj_conv);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
LDKCVec_u8Z arg_var = ChannelReestablish_write(&obj_conv);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
LDKCVec_u8Z arg_var = ClosingSigned_write(&obj_conv);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
LDKCVec_u8Z arg_var = CommitmentSigned_write(&obj_conv);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
LDKCVec_u8Z arg_var = FundingCreated_write(&obj_conv);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
LDKCVec_u8Z arg_var = FundingSigned_write(&obj_conv);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
LDKCVec_u8Z arg_var = FundingLocked_write(&obj_conv);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
LDKCVec_u8Z arg_var = Init_write(&obj_conv);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
LDKCVec_u8Z arg_var = OpenChannel_write(&obj_conv);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
LDKCVec_u8Z arg_var = RevokeAndACK_write(&obj_conv);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
LDKCVec_u8Z arg_var = Shutdown_write(&obj_conv);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
LDKCVec_u8Z arg_var = UpdateFailHTLC_write(&obj_conv);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
LDKCVec_u8Z arg_var = UpdateFailMalformedHTLC_write(&obj_conv);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
LDKCVec_u8Z arg_var = UpdateFee_write(&obj_conv);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
LDKCVec_u8Z arg_var = UpdateFulfillHTLC_write(&obj_conv);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
LDKCVec_u8Z arg_var = UpdateAddHTLC_write(&obj_conv);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
LDKCVec_u8Z arg_var = Ping_write(&obj_conv);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
LDKCVec_u8Z arg_var = Pong_write(&obj_conv);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
LDKCVec_u8Z arg_var = UnsignedChannelAnnouncement_write(&obj_conv);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
LDKCVec_u8Z arg_var = ChannelAnnouncement_write(&obj_conv);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
LDKCVec_u8Z arg_var = UnsignedChannelUpdate_write(&obj_conv);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
LDKCVec_u8Z arg_var = ChannelUpdate_write(&obj_conv);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
LDKCVec_u8Z arg_var = ErrorMessage_write(&obj_conv);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
LDKCVec_u8Z arg_var = UnsignedNodeAnnouncement_write(&obj_conv);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
LDKCVec_u8Z arg_var = NodeAnnouncement_write(&obj_conv);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
LDKCVec_u8Z arg_var = QueryShortChannelIds_write(&obj_conv);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
LDKCVec_u8Z arg_var = ReplyShortChannelIdsEnd_write(&obj_conv);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
LDKCVec_u8Z arg_var = QueryChannelRange_write(&obj_conv);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
LDKCVec_u8Z arg_var = ReplyChannelRange_write(&obj_conv);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
LDKCVec_u8Z arg_var = GossipTimestampFilter_write(&obj_conv);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
for (size_t i = 0; i < ret_var.datalen; i++) {
jbyteArray arr_conv_8_arr = (*_env)->NewByteArray(_env, 33);
(*_env)->SetByteArrayRegion(_env, arr_conv_8_arr, 0, 33, ret_var.data[i].compressed_form);
- (*_env)->SetObjectArrayElement(_env, ret_arr, i, arr_conv_8_arr);}
+ (*_env)->SetObjectArrayElement(_env, ret_arr, i, arr_conv_8_arr);
+ }
+ CVec_PublicKeyZ_free(ret_var);
return ret_arr;
}
LDKCVec_u8Z arg_var = TxCreationKeys_write(&obj_conv);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
LDKCVec_u8Z arg_var = ChannelPublicKeys_write(&obj_conv);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
LDKCVec_u8Z arg_var = get_revokeable_redeemscript(revocation_key_ref, contest_delay, broadcaster_delayed_payment_key_ref);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
LDKCVec_u8Z arg_var = HTLCOutputInCommitment_write(&obj_conv);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
LDKCVec_u8Z arg_var = get_htlc_redeemscript(&htlc_conv, &keys_conv);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
LDKCVec_u8Z arg_var = make_funding_redeemscript(broadcaster_ref, countersignatory_ref);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
this_ptr_conv.inner = (void*)(this_ptr & (~1));
this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0);
LDKTransaction val_conv = *(LDKTransaction*)val;
- FREE((void*)val);
HolderCommitmentTransaction_set_unsigned_tx(&this_ptr_conv, val_conv);
}
JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_HolderCommitmentTransaction_1new_1missing_1holder_1sig(JNIEnv * _env, jclass _b, jlong unsigned_tx, jbyteArray counterparty_sig, jbyteArray holder_funding_key, jbyteArray counterparty_funding_key, jlong keys, jint feerate_per_kw, jlongArray htlc_data) {
LDKTransaction unsigned_tx_conv = *(LDKTransaction*)unsigned_tx;
- FREE((void*)unsigned_tx);
LDKSignature counterparty_sig_ref;
CHECK((*_env)->GetArrayLength (_env, counterparty_sig) == 64);
(*_env)->GetByteArrayRegion (_env, counterparty_sig, 0, 64, counterparty_sig_ref.compact_form);
LDKCVec_u8Z arg_var = HolderCommitmentTransaction_write(&obj_conv);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
LDKCVec_u8Z arg_var = Route_write(&obj_conv);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
LDKChannelDetails arr_conv_16_conv;
arr_conv_16_conv.inner = (void*)(arr_conv_16 & (~1));
arr_conv_16_conv.is_owned = (arr_conv_16 & 1) || (arr_conv_16 == 0);
+ if (arr_conv_16_conv.inner != NULL)
+ arr_conv_16_conv = ChannelDetails_clone(&arr_conv_16_conv);
first_hops_constr.data[q] = arr_conv_16_conv;
}
(*_env)->ReleaseLongArrayElements (_env, first_hops, first_hops_vals, 0);
LDKCVec_u8Z arg_var = DirectionalChannelInfo_write(&obj_conv);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
LDKCVec_u8Z arg_var = ChannelInfo_write(&obj_conv);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
LDKCVec_u8Z arg_var = RoutingFees_write(&obj_conv);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
LDKCVec_u8Z arg_var = NodeAnnouncementInfo_write(&obj_conv);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
LDKCVec_u8Z arg_var = NodeInfo_write(&obj_conv);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}
LDKCVec_u8Z arg_var = NetworkGraph_write(&obj_conv);
jbyteArray arg_arr = (*_env)->NewByteArray(_env, arg_var.datalen);
(*_env)->SetByteArrayRegion(_env, arg_arr, 0, arg_var.datalen, arg_var.data);
+ CVec_u8Z_free(arg_var);
return arg_arr;
}