From ce824e2b5ef533be0293445a4f7b57d829122762 Mon Sep 17 00:00:00 2001 From: deuce <> Date: Tue, 9 Jul 2019 23:35:24 +0000 Subject: [PATCH] Fix sub-parameter parsing and extended color DECRPSS. --- src/conio/cterm.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/conio/cterm.c b/src/conio/cterm.c index 10b7d438dc..e1a3d50a63 100644 --- a/src/conio/cterm.c +++ b/src/conio/cterm.c @@ -999,7 +999,7 @@ static bool parse_sub_parameters(struct sub_params *sub, struct esc_seq *seq, un int i; char *p; - sub->param_count = 0; + sub->param_count = 1; sub->param_int = NULL; if (param >= seq->param_count) @@ -1013,7 +1013,8 @@ static bool parse_sub_parameters(struct sub_params *sub, struct esc_seq *seq, un if (sub->param_int == NULL) return false; p = seq->param[param]; - for (i=0; i<seq->param_count; i++) { + for (i=0; i<sub->param_count; i++) { + p++; sub->param_int[i] = strtoull(p, &p, 10); if (*p != ':' && *p != 0) { free(seq->param_int); @@ -2946,10 +2947,14 @@ static void do_ansi(struct cterminal *cterm, char *retbuf, size_t retsize, int * break; } } - if (cterm->fg_tc_str) + if (cterm->fg_tc_str) { + strcat(tmp, ";"); strcat(tmp, cterm->fg_tc_str); - if (cterm->bg_tc_str) + } + if (cterm->bg_tc_str) { + strcat(tmp, ";"); strcat(tmp, cterm->bg_tc_str); + } strcat(tmp, "m"); if(strlen(retbuf)+strlen(tmp) < retsize) strcat(retbuf, tmp); -- GitLab