diff --git a/src/conio/cterm.c b/src/conio/cterm.c index ccda29efda2e5764c98dc6c6e9637a7022d07eab..664f4f52da57dd6cc8aab2c35819378261d98110 100644 --- a/src/conio/cterm.c +++ b/src/conio/cterm.c @@ -4752,22 +4752,6 @@ CIOLIBEXPORT char* CIOLIBCALL cterm_write(struct cterminal * cterm, const void * else { if (cterm->strbuf) { cterm->strbuf[cterm->strbuflen++] = ch[0]; - switch(cterm->sixel) { - case SIXEL_STARTED: - parse_sixel_string(cterm, false); - break; - case SIXEL_POSSIBLE: - parse_sixel_intro(cterm); - break; - } - switch(cterm->macro) { - case MACRO_STARTED: - parse_macro_string(cterm, false); - break; - case MACRO_POSSIBLE: - parse_macro_intro(cterm); - break; - } if (cterm->strbuflen == cterm->strbufsize) { char *p; @@ -4786,6 +4770,23 @@ CIOLIBEXPORT char* CIOLIBCALL cterm_write(struct cterminal * cterm, const void * cterm->strbuf = p; } } + cterm->strbuf[cterm->strbuflen] = 0; + switch(cterm->sixel) { + case SIXEL_STARTED: + parse_sixel_string(cterm, false); + break; + case SIXEL_POSSIBLE: + parse_sixel_intro(cterm); + break; + } + switch(cterm->macro) { + case MACRO_STARTED: + parse_macro_string(cterm, false); + break; + case MACRO_POSSIBLE: + parse_macro_intro(cterm); + break; + } } } break; @@ -4830,6 +4831,7 @@ CIOLIBEXPORT char* CIOLIBCALL cterm_write(struct cterminal * cterm, const void * cterm->strbuf = p; } } + cterm->strbuf[cterm->strbuflen] = 0; } } break;