From 3674c1da71bcd9e92132420b6296dc714ee51503 Mon Sep 17 00:00:00 2001 From: Chris Allegretta Date: Sun, 12 May 2002 20:43:49 +0000 Subject: [PATCH] - winio.c:edit_add() - Add in the necessary regfree() calls to stop nano from leaking memory like a sieve when using color syntax highlighting :-) git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1207 35c25a1d-7b9e-4130-9fde-d3aeb78583b8 --- ChangeLog | 2 ++ winio.c | 24 +++++++++++++++++++----- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 17846f6b..e7392b33 100644 --- a/ChangeLog +++ b/ChangeLog @@ -74,6 +74,8 @@ CVS code - - winio.c: edit_add() - Changed some syntax hilight computations for the sake of COLS. + - Add in the necessary regfree() calls to stop nano from leaking + memory like a sieve when using color syntax highlighting :-) botombars(), onekey() - Cleanups (David Benbennick). - po/gl.po: diff --git a/winio.c b/winio.c index 0b84735e..5eadd6a1 100644 --- a/winio.c +++ b/winio.c @@ -856,6 +856,8 @@ void edit_add(filestruct * fileptr, int yval, int start, int virt_cur_x, k += colormatches[0].rm_eo; } + regfree(&color_regexp); + } /* Now, if there's an 'end' somewhere below, and a 'start' somewhere above, things get really fun. We have to look @@ -868,9 +870,12 @@ void edit_add(filestruct * fileptr, int yval, int start, int virt_cur_x, while (s != NULL) { regcomp(&color_regexp, tmpcolor->start, 0); if (!regexec - (&color_regexp, s->data, 1, colormatches, 0)) + (&color_regexp, s->data, 1, colormatches, 0)) { + regfree(&color_regexp); break; + } s = s->prev; + regfree(&color_regexp); } if (s != NULL) { @@ -881,9 +886,12 @@ void edit_add(filestruct * fileptr, int yval, int start, int virt_cur_x, while (e != NULL && e != fileptr) { regcomp(&color_regexp, tmpcolor->end, 0); if (!regexec - (&color_regexp, e->data, 1, colormatches, 0)) + (&color_regexp, e->data, 1, colormatches, 0)) { + regfree(&color_regexp); break; + } e = e->next; + regfree(&color_regexp); } if (e != fileptr) @@ -893,9 +901,12 @@ void edit_add(filestruct * fileptr, int yval, int start, int virt_cur_x, regcomp(&color_regexp, tmpcolor->end, 0); if (!regexec (&color_regexp, e->data, 1, colormatches, - 0)) + 0)) { + regfree(&color_regexp); break; + } e = e->next; + regfree(&color_regexp); } if (e == NULL) @@ -907,9 +918,11 @@ void edit_add(filestruct * fileptr, int yval, int start, int virt_cur_x, regcomp(&color_regexp, tmpcolor->end, 0); if (!regexec (&color_regexp, e->data, 1, - colormatches, 0)) + colormatches, 0)) { + regfree(&color_regexp); break; - e = e->next; + } e = e->next; + regfree(&color_regexp); } if (e == NULL) @@ -960,6 +973,7 @@ void edit_add(filestruct * fileptr, int yval, int start, int virt_cur_x, } } + #endif /* ENABLE_COLOR */ #ifndef NANO_SMALL