diff --git a/src/conio/cterm.c b/src/conio/cterm.c index 44a477feac10605536fb96485ba459435a1cc381..2755d503150549b6d0e292c7cd7c7cbc51326a72 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; }