diff --git a/other/event_tooling/generate_event_c.cpp b/other/event_tooling/generate_event_c.cpp index 1505ca6dc6..ee030e2de3 100644 --- a/other/event_tooling/generate_event_c.cpp +++ b/other/event_tooling/generate_event_c.cpp @@ -616,7 +616,9 @@ void generate_event_impl(const std::string& event_name, const std::vectormem, "; f << t.name_data << ", " << t.name_length_cb << ")) {\n"; + f << " tox_event_" << event_name_l << "_free(" << event_name_l << ", state->mem);\n"; f << " state->error = TOX_ERR_EVENTS_ITERATE_MALLOC;\n"; + f << " return;\n"; f << " }\n"; }, [&](const EventTypeByteArray& t) { diff --git a/toxcore/events/conference_invite.c b/toxcore/events/conference_invite.c index 7ee9265884..fe53989894 100644 --- a/toxcore/events/conference_invite.c +++ b/toxcore/events/conference_invite.c @@ -233,7 +233,9 @@ void tox_events_handle_conference_invite( tox_event_conference_invite_set_friend_number(conference_invite, friend_number); tox_event_conference_invite_set_type(conference_invite, type); if (!tox_event_conference_invite_set_cookie(conference_invite, state->mem, cookie, length)) { + tox_event_conference_invite_free(conference_invite, state->mem); state->error = TOX_ERR_EVENTS_ITERATE_MALLOC; + return; } } diff --git a/toxcore/events/conference_message.c b/toxcore/events/conference_message.c index 6bf8a82dec..5a29274e35 100644 --- a/toxcore/events/conference_message.c +++ b/toxcore/events/conference_message.c @@ -249,7 +249,9 @@ void tox_events_handle_conference_message( tox_event_conference_message_set_peer_number(conference_message, peer_number); tox_event_conference_message_set_type(conference_message, type); if (!tox_event_conference_message_set_message(conference_message, state->mem, message, length)) { + tox_event_conference_message_free(conference_message, state->mem); state->error = TOX_ERR_EVENTS_ITERATE_MALLOC; + return; } } diff --git a/toxcore/events/conference_peer_name.c b/toxcore/events/conference_peer_name.c index c2e07b203b..a3cbac7a73 100644 --- a/toxcore/events/conference_peer_name.c +++ b/toxcore/events/conference_peer_name.c @@ -231,7 +231,9 @@ void tox_events_handle_conference_peer_name( tox_event_conference_peer_name_set_conference_number(conference_peer_name, conference_number); tox_event_conference_peer_name_set_peer_number(conference_peer_name, peer_number); if (!tox_event_conference_peer_name_set_name(conference_peer_name, state->mem, name, length)) { + tox_event_conference_peer_name_free(conference_peer_name, state->mem); state->error = TOX_ERR_EVENTS_ITERATE_MALLOC; + return; } } diff --git a/toxcore/events/conference_title.c b/toxcore/events/conference_title.c index 3c4c77394e..88db4a41d6 100644 --- a/toxcore/events/conference_title.c +++ b/toxcore/events/conference_title.c @@ -231,7 +231,9 @@ void tox_events_handle_conference_title( tox_event_conference_title_set_conference_number(conference_title, conference_number); tox_event_conference_title_set_peer_number(conference_title, peer_number); if (!tox_event_conference_title_set_title(conference_title, state->mem, title, length)) { + tox_event_conference_title_free(conference_title, state->mem); state->error = TOX_ERR_EVENTS_ITERATE_MALLOC; + return; } } diff --git a/toxcore/events/dht_nodes_response.c b/toxcore/events/dht_nodes_response.c index a87c4ab8da..777d8bca26 100644 --- a/toxcore/events/dht_nodes_response.c +++ b/toxcore/events/dht_nodes_response.c @@ -232,7 +232,9 @@ void tox_events_handle_dht_nodes_response( tox_event_dht_nodes_response_set_public_key(dht_nodes_response, public_key); if (!tox_event_dht_nodes_response_set_ip(dht_nodes_response, state->mem, ip, ip_length)) { + tox_event_dht_nodes_response_free(dht_nodes_response, state->mem); state->error = TOX_ERR_EVENTS_ITERATE_MALLOC; + return; } tox_event_dht_nodes_response_set_port(dht_nodes_response, port); } diff --git a/toxcore/events/file_recv.c b/toxcore/events/file_recv.c index 7a1bcb6edb..d6a162b948 100644 --- a/toxcore/events/file_recv.c +++ b/toxcore/events/file_recv.c @@ -263,7 +263,9 @@ void tox_events_handle_file_recv( tox_event_file_recv_set_kind(file_recv, kind); tox_event_file_recv_set_file_size(file_recv, file_size); if (!tox_event_file_recv_set_filename(file_recv, state->mem, filename, filename_length)) { + tox_event_file_recv_free(file_recv, state->mem); state->error = TOX_ERR_EVENTS_ITERATE_MALLOC; + return; } } diff --git a/toxcore/events/file_recv_chunk.c b/toxcore/events/file_recv_chunk.c index 55cb4de9a1..1b29a7adcd 100644 --- a/toxcore/events/file_recv_chunk.c +++ b/toxcore/events/file_recv_chunk.c @@ -247,7 +247,9 @@ void tox_events_handle_file_recv_chunk( tox_event_file_recv_chunk_set_file_number(file_recv_chunk, file_number); tox_event_file_recv_chunk_set_position(file_recv_chunk, position); if (!tox_event_file_recv_chunk_set_data(file_recv_chunk, state->mem, data, length)) { + tox_event_file_recv_chunk_free(file_recv_chunk, state->mem); state->error = TOX_ERR_EVENTS_ITERATE_MALLOC; + return; } } diff --git a/toxcore/events/friend_lossless_packet.c b/toxcore/events/friend_lossless_packet.c index 94aecbea6f..a7440bb65a 100644 --- a/toxcore/events/friend_lossless_packet.c +++ b/toxcore/events/friend_lossless_packet.c @@ -215,7 +215,9 @@ void tox_events_handle_friend_lossless_packet( tox_event_friend_lossless_packet_set_friend_number(friend_lossless_packet, friend_number); if (!tox_event_friend_lossless_packet_set_data(friend_lossless_packet, state->mem, data, length)) { + tox_event_friend_lossless_packet_free(friend_lossless_packet, state->mem); state->error = TOX_ERR_EVENTS_ITERATE_MALLOC; + return; } } diff --git a/toxcore/events/friend_lossy_packet.c b/toxcore/events/friend_lossy_packet.c index f269f24e8e..5c90ba1eab 100644 --- a/toxcore/events/friend_lossy_packet.c +++ b/toxcore/events/friend_lossy_packet.c @@ -215,7 +215,9 @@ void tox_events_handle_friend_lossy_packet( tox_event_friend_lossy_packet_set_friend_number(friend_lossy_packet, friend_number); if (!tox_event_friend_lossy_packet_set_data(friend_lossy_packet, state->mem, data, length)) { + tox_event_friend_lossy_packet_free(friend_lossy_packet, state->mem); state->error = TOX_ERR_EVENTS_ITERATE_MALLOC; + return; } } diff --git a/toxcore/events/friend_message.c b/toxcore/events/friend_message.c index c110213def..cf01dcf291 100644 --- a/toxcore/events/friend_message.c +++ b/toxcore/events/friend_message.c @@ -233,7 +233,9 @@ void tox_events_handle_friend_message( tox_event_friend_message_set_friend_number(friend_message, friend_number); tox_event_friend_message_set_type(friend_message, type); if (!tox_event_friend_message_set_message(friend_message, state->mem, message, length)) { + tox_event_friend_message_free(friend_message, state->mem); state->error = TOX_ERR_EVENTS_ITERATE_MALLOC; + return; } } diff --git a/toxcore/events/friend_name.c b/toxcore/events/friend_name.c index 73a77915b9..031f1274a2 100644 --- a/toxcore/events/friend_name.c +++ b/toxcore/events/friend_name.c @@ -215,7 +215,9 @@ void tox_events_handle_friend_name( tox_event_friend_name_set_friend_number(friend_name, friend_number); if (!tox_event_friend_name_set_name(friend_name, state->mem, name, length)) { + tox_event_friend_name_free(friend_name, state->mem); state->error = TOX_ERR_EVENTS_ITERATE_MALLOC; + return; } } diff --git a/toxcore/events/friend_request.c b/toxcore/events/friend_request.c index 51346c0c3c..949f95447c 100644 --- a/toxcore/events/friend_request.c +++ b/toxcore/events/friend_request.c @@ -218,7 +218,9 @@ void tox_events_handle_friend_request( tox_event_friend_request_set_public_key(friend_request, public_key); if (!tox_event_friend_request_set_message(friend_request, state->mem, message, length)) { + tox_event_friend_request_free(friend_request, state->mem); state->error = TOX_ERR_EVENTS_ITERATE_MALLOC; + return; } } diff --git a/toxcore/events/friend_status_message.c b/toxcore/events/friend_status_message.c index d50b3505de..6f29f006e4 100644 --- a/toxcore/events/friend_status_message.c +++ b/toxcore/events/friend_status_message.c @@ -215,7 +215,9 @@ void tox_events_handle_friend_status_message( tox_event_friend_status_message_set_friend_number(friend_status_message, friend_number); if (!tox_event_friend_status_message_set_message(friend_status_message, state->mem, message, length)) { + tox_event_friend_status_message_free(friend_status_message, state->mem); state->error = TOX_ERR_EVENTS_ITERATE_MALLOC; + return; } } diff --git a/toxcore/events/group_custom_packet.c b/toxcore/events/group_custom_packet.c index f76056ad87..8274bcf4a7 100644 --- a/toxcore/events/group_custom_packet.c +++ b/toxcore/events/group_custom_packet.c @@ -231,7 +231,9 @@ void tox_events_handle_group_custom_packet( tox_event_group_custom_packet_set_group_number(group_custom_packet, group_number); tox_event_group_custom_packet_set_peer_id(group_custom_packet, peer_id); if (!tox_event_group_custom_packet_set_data(group_custom_packet, state->mem, data, data_length)) { + tox_event_group_custom_packet_free(group_custom_packet, state->mem); state->error = TOX_ERR_EVENTS_ITERATE_MALLOC; + return; } } diff --git a/toxcore/events/group_custom_private_packet.c b/toxcore/events/group_custom_private_packet.c index dbe59c6655..af59842910 100644 --- a/toxcore/events/group_custom_private_packet.c +++ b/toxcore/events/group_custom_private_packet.c @@ -231,7 +231,9 @@ void tox_events_handle_group_custom_private_packet( tox_event_group_custom_private_packet_set_group_number(group_custom_private_packet, group_number); tox_event_group_custom_private_packet_set_peer_id(group_custom_private_packet, peer_id); if (!tox_event_group_custom_private_packet_set_data(group_custom_private_packet, state->mem, data, data_length)) { + tox_event_group_custom_private_packet_free(group_custom_private_packet, state->mem); state->error = TOX_ERR_EVENTS_ITERATE_MALLOC; + return; } } diff --git a/toxcore/events/group_invite.c b/toxcore/events/group_invite.c index 259e881bcb..0a458081fd 100644 --- a/toxcore/events/group_invite.c +++ b/toxcore/events/group_invite.c @@ -264,10 +264,14 @@ void tox_events_handle_group_invite( tox_event_group_invite_set_friend_number(group_invite, friend_number); if (!tox_event_group_invite_set_invite_data(group_invite, state->mem, invite_data, invite_data_length)) { + tox_event_group_invite_free(group_invite, state->mem); state->error = TOX_ERR_EVENTS_ITERATE_MALLOC; + return; } if (!tox_event_group_invite_set_group_name(group_invite, state->mem, group_name, group_name_length)) { + tox_event_group_invite_free(group_invite, state->mem); state->error = TOX_ERR_EVENTS_ITERATE_MALLOC; + return; } } diff --git a/toxcore/events/group_message.c b/toxcore/events/group_message.c index f87bc39001..c441a22830 100644 --- a/toxcore/events/group_message.c +++ b/toxcore/events/group_message.c @@ -264,7 +264,9 @@ void tox_events_handle_group_message( tox_event_group_message_set_peer_id(group_message, peer_id); tox_event_group_message_set_message_type(group_message, message_type); if (!tox_event_group_message_set_message(group_message, state->mem, message, message_length)) { + tox_event_group_message_free(group_message, state->mem); state->error = TOX_ERR_EVENTS_ITERATE_MALLOC; + return; } tox_event_group_message_set_message_id(group_message, message_id); } diff --git a/toxcore/events/group_password.c b/toxcore/events/group_password.c index fe98701b85..89a77ef52f 100644 --- a/toxcore/events/group_password.c +++ b/toxcore/events/group_password.c @@ -215,7 +215,9 @@ void tox_events_handle_group_password( tox_event_group_password_set_group_number(group_password, group_number); if (!tox_event_group_password_set_password(group_password, state->mem, password, password_length)) { + tox_event_group_password_free(group_password, state->mem); state->error = TOX_ERR_EVENTS_ITERATE_MALLOC; + return; } } diff --git a/toxcore/events/group_peer_exit.c b/toxcore/events/group_peer_exit.c index 197cbd3b78..bc245c7a85 100644 --- a/toxcore/events/group_peer_exit.c +++ b/toxcore/events/group_peer_exit.c @@ -298,10 +298,14 @@ void tox_events_handle_group_peer_exit( tox_event_group_peer_exit_set_peer_id(group_peer_exit, peer_id); tox_event_group_peer_exit_set_exit_type(group_peer_exit, exit_type); if (!tox_event_group_peer_exit_set_name(group_peer_exit, state->mem, name, name_length)) { + tox_event_group_peer_exit_free(group_peer_exit, state->mem); state->error = TOX_ERR_EVENTS_ITERATE_MALLOC; + return; } if (!tox_event_group_peer_exit_set_part_message(group_peer_exit, state->mem, part_message, part_message_length)) { + tox_event_group_peer_exit_free(group_peer_exit, state->mem); state->error = TOX_ERR_EVENTS_ITERATE_MALLOC; + return; } } diff --git a/toxcore/events/group_peer_name.c b/toxcore/events/group_peer_name.c index 042d44ab05..26d6190415 100644 --- a/toxcore/events/group_peer_name.c +++ b/toxcore/events/group_peer_name.c @@ -231,7 +231,9 @@ void tox_events_handle_group_peer_name( tox_event_group_peer_name_set_group_number(group_peer_name, group_number); tox_event_group_peer_name_set_peer_id(group_peer_name, peer_id); if (!tox_event_group_peer_name_set_name(group_peer_name, state->mem, name, name_length)) { + tox_event_group_peer_name_free(group_peer_name, state->mem); state->error = TOX_ERR_EVENTS_ITERATE_MALLOC; + return; } } diff --git a/toxcore/events/group_private_message.c b/toxcore/events/group_private_message.c index 85c32f22ed..571f7488e6 100644 --- a/toxcore/events/group_private_message.c +++ b/toxcore/events/group_private_message.c @@ -264,7 +264,9 @@ void tox_events_handle_group_private_message( tox_event_group_private_message_set_peer_id(group_private_message, peer_id); tox_event_group_private_message_set_message_type(group_private_message, message_type); if (!tox_event_group_private_message_set_message(group_private_message, state->mem, message, message_length)) { + tox_event_group_private_message_free(group_private_message, state->mem); state->error = TOX_ERR_EVENTS_ITERATE_MALLOC; + return; } tox_event_group_private_message_set_message_id(group_private_message, message_id); } diff --git a/toxcore/events/group_topic.c b/toxcore/events/group_topic.c index 5897d503ad..53ede5277e 100644 --- a/toxcore/events/group_topic.c +++ b/toxcore/events/group_topic.c @@ -231,7 +231,9 @@ void tox_events_handle_group_topic( tox_event_group_topic_set_group_number(group_topic, group_number); tox_event_group_topic_set_peer_id(group_topic, peer_id); if (!tox_event_group_topic_set_topic(group_topic, state->mem, topic, topic_length)) { + tox_event_group_topic_free(group_topic, state->mem); state->error = TOX_ERR_EVENTS_ITERATE_MALLOC; + return; } }