From 49a669a863b5d1f2eca0f7bc628d7436a997de33 Mon Sep 17 00:00:00 2001 From: PatR Date: Mon, 8 Jul 2024 13:50:26 -0700 Subject: [PATCH] yn_function() sanity Add the impossible with slightly less detail. With any luck paxed's magic debugger can track down what is happening with the canned response queue. --- src/cmd.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/cmd.c b/src/cmd.c index dd1d40fe6..e4d68213c 100644 --- a/src/cmd.c +++ b/src/cmd.c @@ -5158,6 +5158,18 @@ yn_function( dumplogmsg(dumplog_buf); } #endif + /* should not happen but cq.key has been observed to not obey 'resp'; + do this after dumplog has recorded the potentially bad value */ + if (!res || (resp && !strchr(resp, res))) { + /* this probably needs refinement since caller is expecting something + within 'resp' and ESC won't be (it could be present, but as a flag + for unshown possibilities rather than as acceptable input) */ + int altres = def ? def : '\033'; + + impossible("yn_function() returned '%s'; using '%s' instead", + visctrl(res), visctrl(altres)); + res = altres; + } /* in case we're called via getdir() which sets input_state */ gp.program_state.input_state = otherInp; return res;