From cb9d1e181dbdfbe20b7d7a548a4c6860e378d364 Mon Sep 17 00:00:00 2001
From: deuce <>
Date: Sat, 25 Apr 2020 08:21:30 +0000
Subject: [PATCH] Fix macro space query.

---
 src/conio/cterm.c | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/src/conio/cterm.c b/src/conio/cterm.c
index 44a477feac..2755d50315 100644
--- a/src/conio/cterm.c
+++ b/src/conio/cterm.c
@@ -2383,6 +2383,18 @@ static void do_ansi(struct cterminal *cterm, char *retbuf, size_t retsize, int *
 											sprintf(tmp, "\x1b[=3;%u;%un", vparams[vmode].charheight, vparams[vmode].charwidth);
 										break;
 									}
+								}
+								if(*tmp && strlen(retbuf) + strlen(tmp) < retsize)
+									strcat(retbuf, tmp);
+							}
+							else if (seq->param_str[0] == '?' && parse_parameters(seq)) {
+								if(retbuf == NULL)
+									break;
+								tmp[0] = 0;
+								if (seq->param_count > 1)
+									break;
+								seq_default(seq, 0, 1);
+								switch(seq->param_int[0]) {
 									case 62: /* Query macro space available */
 									{
 										// Just fake it as int16_max
@@ -3525,9 +3537,10 @@ static void do_ansi(struct cterminal *cterm, char *retbuf, size_t retsize, int *
 									break;
 								case 255:
 									if (retbuf != NULL) {
-										sprintf(tmp, "\x1b[%d;%dR", CURR_MAXY,CURR_MAXX);
-										if (strlen(retbuf) + strlen(tmp) < retsize)
+										sprintf(tmp, "\x1b[%d;%dR", CURR_MAXY, CURR_MAXX);
+										if (strlen(retbuf) + strlen(tmp) < retsize) {
 											strcat(retbuf, tmp);
+										}
 									}
 									break;
 							}
-- 
GitLab