From ee33503402c1af31216694f3776dfd15d898e82d Mon Sep 17 00:00:00 2001 From: Benno Schulenberg Date: Sun, 29 Nov 2015 13:20:08 +0000 Subject: [PATCH] Using the main multidata-cache-allocation routine. (Note that there can only be colorstrings when there /is/ a syntax, so there is no need to check for the latter here.) git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@5452 35c25a1d-7b9e-4130-9fde-d3aeb78583b8 --- ChangeLog | 1 + src/winio.c | 14 ++++---------- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index c9169455..e8f21d80 100644 --- a/ChangeLog +++ b/ChangeLog @@ -6,6 +6,7 @@ * src/winio.c (edit_draw): When an end is found but nothing is painted (because the coloured part is horizontally scrolled off), nevertheless set the multidata to CBEGINBEFORE. This fixes Savannah bug #46545. + * src/winio.c (edit_draw): Use the main cache-allocation routine. 2015-11-28 Benno Schulenberg * src/nano.c (main): Allow the user full control over the values of diff --git a/src/winio.c b/src/winio.c index 93f868b8..473b09a4 100644 --- a/src/winio.c +++ b/src/winio.c @@ -2481,16 +2481,10 @@ void edit_draw(filestruct *fileptr, const char *converted, int if (openfile->colorstrings != NULL && !ISSET(NO_COLOR_SYNTAX)) { const colortype *tmpcolor = openfile->colorstrings; - /* Set up multi-line color data for this line if it's not yet - * calculated. */ - if (fileptr->multidata == NULL && openfile->syntax - && openfile->syntax->nmultis > 0) { - int i; - fileptr->multidata = (short *)nmalloc(openfile->syntax->nmultis * sizeof(short)); - for (i = 0; i < openfile->syntax->nmultis; i++) - /* Assume this applies until we know otherwise. */ - fileptr->multidata[i] = -1; - } + /* If there are multiline regexes, make sure there is a cache. */ + if (openfile->syntax->nmultis > 0) + alloc_multidata_if_needed(fileptr); + for (; tmpcolor != NULL; tmpcolor = tmpcolor->next) { int x_start; /* Starting column for mvwaddnstr. Zero-based. */