From 3a3e62b24d65cbe7ee480119c68106c5ecbcd8a2 Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Sat, 16 Dec 2023 01:12:28 +0000 Subject: [PATCH] Fix subghz crash on tx attempt with non tx proto (#492) --- applications/main/subghz/helpers/subghz_txrx.c | 2 +- applications/main/subghz/scenes/subghz_scene_receiver.c | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/applications/main/subghz/helpers/subghz_txrx.c b/applications/main/subghz/helpers/subghz_txrx.c index 583138e51..99791d0eb 100644 --- a/applications/main/subghz/helpers/subghz_txrx.c +++ b/applications/main/subghz/helpers/subghz_txrx.c @@ -305,7 +305,7 @@ SubGhzTxRxStartTxState subghz_txrx_tx_start(SubGhzTxRx* instance, FlipperFormat* ret = SubGhzTxRxStartTxStateErrorParserOthers; } if(ret != SubGhzTxRxStartTxStateOk) { - subghz_transmitter_free(instance->transmitter); + if(instance->transmitter) subghz_transmitter_free(instance->transmitter); if(instance->txrx_state != SubGhzTxRxStateIDLE) { subghz_txrx_idle(instance); } diff --git a/applications/main/subghz/scenes/subghz_scene_receiver.c b/applications/main/subghz/scenes/subghz_scene_receiver.c index 0a7632cbf..c9ac8f3ff 100644 --- a/applications/main/subghz/scenes/subghz_scene_receiver.c +++ b/applications/main/subghz/scenes/subghz_scene_receiver.c @@ -370,7 +370,7 @@ bool subghz_scene_receiver_on_event(void* context, SceneManagerEvent event) { FURI_LOG_E(TAG, "Missing TE"); } - if(!subghz_tx_start(subghz, key_repeat_data)) { + if(subghz_txrx_tx_start(subghz->txrx, key_repeat_data) != SubGhzTxRxStartTxStateOk) { view_dispatcher_send_custom_event( subghz->view_dispatcher, SubGhzCustomEventViewRepeaterStop); } else { @@ -399,11 +399,12 @@ bool subghz_scene_receiver_on_event(void* context, SceneManagerEvent event) { case SubGhzCustomEventViewReceiverOKLong: subghz_txrx_stop(subghz->txrx); subghz_txrx_hopper_pause(subghz->txrx); - if(!subghz_tx_start( - subghz, + if(subghz_txrx_tx_start( + subghz->txrx, subghz_history_get_raw_data( subghz->history, - subghz_view_receiver_get_idx_menu(subghz->subghz_receiver)))) { + subghz_view_receiver_get_idx_menu(subghz->subghz_receiver))) != + SubGhzTxRxStartTxStateOk) { view_dispatcher_send_custom_event( subghz->view_dispatcher, SubGhzCustomEventViewReceiverOKRelease); } else {