From 5d4c02bbe05bdbfb74fc13bab7f46b1879cc35c2 Mon Sep 17 00:00:00 2001 From: KubaPro010 Date: Mon, 22 Dec 2025 19:24:46 +0100 Subject: [PATCH] fix crash --- src/rds.c | 9 +++++++-- src/rds.h | 2 ++ src/rds95.c | 1 + src/udp_server.c | 1 - 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/rds.c b/src/rds.c index 0fe3f0a..a78dfa8 100644 --- a/src/rds.c +++ b/src/rds.c @@ -697,14 +697,19 @@ void set_rds_defaults(RDSEncoder* enc, uint8_t program) { enc->encoder_data.ascii_data.expected_encoder_addr = 255; // Unknown - lua_on_init(); + if(enc->state[0].first_init_done) lua_on_init(); } void init_rds_encoder(RDSEncoder* enc) { + enc->state[0].first_init_done = 0; for(int i = 0; i < PROGRAMS; i++) set_rds_defaults(enc, i); + enc->state[0].first_init_done = 1; if (encoder_saved()) encoder_loadFromFile(enc); - else encoder_saveToFile(enc); + else { + encoder_saveToFile(enc); + lua_on_init(); + } for(int i = 0; i < PROGRAMS; i++) reset_rds_state(enc, i); } diff --git a/src/rds.h b/src/rds.h index 720d19e..46f71ee 100644 --- a/src/rds.h +++ b/src/rds.h @@ -172,6 +172,8 @@ typedef struct { uint16_t last_stream0_group[3]; uint8_t last_stream0_group_type_b : 1; + + uint8_t first_init_done : 1; } RDSState; typedef struct { diff --git a/src/rds95.c b/src/rds95.c index 7546276..764a7f6 100644 --- a/src/rds95.c +++ b/src/rds95.c @@ -157,6 +157,7 @@ int main(int argc, char **argv) { RDSEncoder rdsEncoder; RDSModulator rdsModulator; + init_lua(rds_mod); init_rds_encoder(&rdsEncoder); init_rds_modulator(&rdsModulator, &rdsEncoder, config.num_streams); diff --git a/src/udp_server.c b/src/udp_server.c index ad79033..391c53a 100644 --- a/src/udp_server.c +++ b/src/udp_server.c @@ -31,7 +31,6 @@ int open_udp_server(int port, RDSModulator* rds_mod) { poller.events = POLLIN; mod = rds_mod; - init_lua(rds_mod); return 0; }