From c14949a86d34996764d0aa67e92bc8cfde361603 Mon Sep 17 00:00:00 2001 From: Michael Morgan <84428382+aa5sh@users.noreply.github.com> Date: Fri, 18 Jul 2025 14:28:49 -0500 Subject: [PATCH] Rewrite Rewrote it some to see if MinGW ok. --- rigs/flexradio/smartsdr.c | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/rigs/flexradio/smartsdr.c b/rigs/flexradio/smartsdr.c index 8cb105e0f..dac05d1db 100644 --- a/rigs/flexradio/smartsdr.c +++ b/rigs/flexradio/smartsdr.c @@ -628,26 +628,38 @@ int smartsdr_send_morse(RIG *rig, vfo_t vfo, const char *msg) int retval; size_t msg_len = strlen(msg); - size_t buf_len = msg_len + 20; + size_t buf_len = msg_len + 20; - char newmsg[msg_len + 1]; - strncpy(newmsg, msg, msg_len + 1); + char *newmsg = malloc(msg_len + 1); + if (!newmsg) + return -RIG_ENOMEM; + + memcpy(newmsg, msg, msg_len + 1); // Copy including null terminator - // Replace spaces with 0x7f for (size_t i = 0; newmsg[i] != '\0'; i++) { if (newmsg[i] == ' ') { newmsg[i] = 0x7f; } } - char cmd[buf_len]; - snprintf(cmd, sizeof(cmd), "cwx send \"%s\"", newmsg); + char *cmd = malloc(buf_len); + if (!cmd) { + free(newmsg); + return -RIG_ENOMEM; + } + + snprintf(cmd, buf_len, "cwx send \"%s\"", newmsg); + + free(newmsg); retval = smartsdr_transaction(rig, cmd); + free(cmd); + RETURNFUNC(retval); } + int smartsdr_stop_morse(RIG *rig, vfo_t vfo) { int retval;