diff options
Diffstat (limited to 'pico')
-rw-r--r-- | pico/composer.c | 15 | ||||
-rw-r--r-- | pico/display.c | 10 |
2 files changed, 18 insertions, 7 deletions
diff --git a/pico/composer.c b/pico/composer.c index b61d5dec..8c80c4a5 100644 --- a/pico/composer.c +++ b/pico/composer.c @@ -2864,8 +2864,10 @@ PaintHeader(int line, /* physical line on screen */ display_delimiter(ComposerEditing ? 0 : 1); - if(lastc) + if(lastc){ pico_set_colorp(lastc, PSC_NONE); + free_color_pair(&lastc); + } } @@ -3372,14 +3374,14 @@ display_delimiter(int state) UCS *bufp, *buf; COLOR_PAIR *lastc = NULL; + if(ComposerTopLine - 1 >= BOTTOM()) /* silently forget it */ + return; + if(Pmaster && Pmaster->colors){ lastc = pico_get_cur_color(); pico_set_colorp(Pmaster->colors->ntcp, PSC_NONE); } - if(ComposerTopLine - 1 >= BOTTOM()) /* silently forget it */ - return; - buf = utf8_to_ucs4_cpystr((gmode & MDHDRONLY) ? "" : HDR_DELIM); if(!buf) return; @@ -3393,6 +3395,7 @@ display_delimiter(int state) if(bufp[delim_ps] == '\0' && !(gmode & MDHDRONLY)){ delim_ps = state; fs_give((void **) &buf); + if(lastc) free_color_pair(&lastc); return; /* already displayed! */ } } @@ -3412,8 +3415,10 @@ display_delimiter(int state) peeol(); fs_give((void **) &buf); - if(lastc) + if(lastc){ pico_set_colorp(lastc, PSC_NONE); + free_color_pair(&lastc); + } } diff --git a/pico/display.c b/pico/display.c index b3c99f72..2ffc78c8 100644 --- a/pico/display.c +++ b/pico/display.c @@ -3377,14 +3377,20 @@ wstripe(int line, int column, char *utf8pmt, int key) ucs4pmt = utf8_to_ucs4_cpystr(utf8pmt); l = ucs4_strlen(ucs4pmt); while(1){ - if(i >= term.t_ncol || col >= term.t_ncol || j >= l) + if(i >= term.t_ncol || col >= term.t_ncol || j >= l){ + if(lastc) free_color_pair(&lastc); + if(ucs4pmt) fs_give((void **) &ucs4pmt); return; /* equal strings */ + } if(ucs4pmt[j] == (UCS) key) j++; - if (pscr(line, i) == NULL) + if (pscr(line, i) == NULL){ + if(lastc) free_color_pair(&lastc); + if(ucs4pmt) fs_give((void **) &ucs4pmt); return; + } if(pscr(line, i)->c != ucs4pmt[j]){ if(j >= 1 && ucs4pmt[j-1] == (UCS) key) |