diff --git a/src/conio/cterm.c b/src/conio/cterm.c index 10b7d438dc904cbd7cb1652386ad2c425ee2ba5b..e1a3d50a630f92c62849e88b717c0bcf12925b1b 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);