Simplify edit.c functions replace_{push,pop}.

* Replace xmalloc (+memmove) with xrealloc
* Code style adjustments.
* Remove obsolete TODO comment
This commit is contained in:
oni-link 2014-05-19 08:43:41 +02:00 committed by Justin M. Keyes
parent 4464732503
commit 49306cfa02

View File

@ -6242,37 +6242,33 @@ static int echeck_abbr(int c)
* For a newline, there are two NUL headed lists. One contains the characters * For a newline, there are two NUL headed lists. One contains the characters
* that the NL replaced. The extra one stores the characters after the cursor * that the NL replaced. The extra one stores the characters after the cursor
* that were deleted (always white space). * that were deleted (always white space).
*
* Replace_offset is normally 0, in which case replace_push will add a new
* character at the end of the stack. If replace_offset is not 0, that many
* characters will be left on the stack above the newly inserted character.
*/ */
static char_u *replace_stack = NULL; static char_u *replace_stack = NULL;
static ssize_t replace_stack_nr = 0; /* next entry in replace stack */ static ssize_t replace_stack_nr = 0; /* next entry in replace stack */
static ssize_t replace_stack_len = 0; /* max. number of entries */ static ssize_t replace_stack_len = 0; /* max. number of entries */
void /// Push character that is replaced onto the the replace stack.
replace_push ( ///
int c /* character that is replaced (NUL is none) */ /// replace_offset is normally 0, in which case replace_push will add a new
) /// character at the end of the stack. If replace_offset is not 0, that many
/// characters will be left on the stack above the newly inserted character.
///
/// @param c character that is replaced (NUL is none)
void replace_push(int c)
{ {
if (replace_stack_nr < replace_offset) /* nothing to do */ if (replace_stack_nr < replace_offset) { // nothing to do
return; return;
}
// TODO(philix): use xrealloc in replace_push()
if (replace_stack_len <= replace_stack_nr) { if (replace_stack_len <= replace_stack_nr) {
replace_stack_len += 50; replace_stack_len += 50;
void *aux = xmalloc(replace_stack_len); replace_stack = xrealloc(replace_stack, replace_stack_len);
if (replace_stack != NULL) {
memmove(aux, replace_stack, replace_stack_nr);
free(replace_stack);
}
replace_stack = aux;
} }
char_u *p = replace_stack + replace_stack_nr - replace_offset; char_u *p = replace_stack + replace_stack_nr - replace_offset;
if (replace_offset) if (replace_offset) {
memmove(p + 1, p, replace_offset); memmove(p + 1, p, replace_offset);
}
*p = (char_u)c; *p = (char_u)c;
++replace_stack_nr; ++replace_stack_nr;
} }
@ -6292,16 +6288,12 @@ int replace_push_mb(char_u *p)
return l; return l;
} }
/* /// Pop one item from the replace stack.
* Pop one item from the replace stack. ///
* return -1 if stack empty /// @return -1 if stack is empty, replaced character or NUL otherwise
* return replaced character or NUL otherwise
*/
static int replace_pop(void) static int replace_pop(void)
{ {
if (replace_stack_nr == 0) return (replace_stack_nr == 0) ? -1 : (int)replace_stack[--replace_stack_nr];
return -1;
return (int)replace_stack[--replace_stack_nr];
} }
/* /*