From 5caa22b79a5532b2848a8e6689e0be2b36a94fde Mon Sep 17 00:00:00 2001 From: George Baltz N3GB Date: Mon, 3 Mar 2025 15:49:12 -0500 Subject: [PATCH] Add locking to rig_stop_morse and rig_wait_morse --- src/rig.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/rig.c b/src/rig.c index bddb74d07..dffbcbcbc 100644 --- a/src/rig.c +++ b/src/rig.c @@ -7545,14 +7545,18 @@ int HAMLIB_API rig_stop_morse(RIG *rig, vfo_t vfo) resetFIFO(rs->fifo_morse); // clear out the CW queue + LOCK(1); if (vfo == RIG_VFO_CURR || vfo == rs->current_vfo) { - RETURNFUNC(caps->stop_morse(rig, vfo)); + retcode = caps->stop_morse(rig, vfo); + LOCK(0); + RETURNFUNC(retcode); } if (!caps->set_vfo) { + LOCK(0); RETURNFUNC(-RIG_ENAVAIL); } @@ -7562,6 +7566,7 @@ int HAMLIB_API rig_stop_morse(RIG *rig, vfo_t vfo) if (retcode != RIG_OK) { + LOCK(0); RETURNFUNC(retcode); } @@ -7576,6 +7581,7 @@ int HAMLIB_API rig_stop_morse(RIG *rig, vfo_t vfo) retcode = rc2; } + LOCK(0); RETURNFUNC(retcode); } @@ -7645,14 +7651,18 @@ int HAMLIB_API rig_wait_morse(RIG *rig, vfo_t vfo) caps = rig->caps; + LOCK(1); if (vfo == RIG_VFO_CURR || vfo == STATE(rig)->current_vfo) { - RETURNFUNC(wait_morse_ptt(rig, vfo)); + retcode = wait_morse_ptt(rig, vfo); + LOCK(0); + RETURNFUNC(retcode); } if (!caps->set_vfo) { + LOCK(0); RETURNFUNC(-RIG_ENAVAIL); } @@ -7662,6 +7672,7 @@ int HAMLIB_API rig_wait_morse(RIG *rig, vfo_t vfo) if (retcode != RIG_OK) { + LOCK(0); RETURNFUNC(retcode); } @@ -7676,6 +7687,7 @@ int HAMLIB_API rig_wait_morse(RIG *rig, vfo_t vfo) retcode = rc2; } + LOCK(0); RETURNFUNC(retcode); }