From: Benno Schulenberg Date: Thu, 3 Dec 2015 08:50:34 +0000 (+0000) Subject: Moving the trimming of the undo stack into a separate function. X-Git-Tag: v2.5.0~11 X-Git-Url: https://git.wh0rd.org/?a=commitdiff_plain;h=ee5cdcbce589ea3eb4cf930d65a360745ede2cc9;p=nano.git Moving the trimming of the undo stack into a separate function. git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@5472 35c25a1d-7b9e-4130-9fde-d3aeb78583b8 --- diff --git a/ChangeLog b/ChangeLog index b9190e10..06241bac 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2015-12-03 Benno Schulenberg + * src/text.c (discard_until): Move the trimming of the undo stack + into a separate function, so it can be used elsewhere. + 2015-12-02 Benno Schulenberg * doc/syntax/python.nanorc: Don't colour triple quotes by themselves. * doc/syntax/python.nanorc: Treat backslashed quotes properly, and diff --git a/src/text.c b/src/text.c index eef0a52a..c63d435c 100644 --- a/src/text.c +++ b/src/text.c @@ -904,6 +904,21 @@ bool execute_command(const char *command) return TRUE; } +/* Discard undo items that are newer than thisone, or all if NULL. */ +void discard_until(undo *thisone) +{ + undo *dropit = openfile->undotop; + + while (dropit != NULL && dropit != thisone) { + openfile->undotop = dropit->next; + free(dropit->strdata); + if (dropit->cutbuffer) + free_filestruct(dropit->cutbuffer); + free(dropit); + dropit = openfile->undotop; + } +} + /* Add a new undo struct to the top of the current pile. */ void add_undo(undo_type action) { @@ -918,14 +933,7 @@ void add_undo(undo_type action) return; /* Blow away newer undo items if we add somewhere in the middle. */ - while (openfile->undotop != NULL && openfile->undotop != u) { - undo *dropit = openfile->undotop; - openfile->undotop = openfile->undotop->next; - free(dropit->strdata); - if (dropit->cutbuffer) - free_filestruct(dropit->cutbuffer); - free(dropit); - } + discard_until(u); #ifdef DEBUG fprintf(stderr, " >> Adding an undo...\n");