From 8460497f0ed5ea8a6b7f0029243a26713a36cc47 Mon Sep 17 00:00:00 2001 From: sabetts Date: Mon, 27 Feb 2006 00:17:39 +0000 Subject: (editor_insert): use memmove to make room for inserted string. --- ChangeLog | 3 +++ src/editor.c | 8 ++------ 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 53a30fe..bf20ccb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2006-02-26 Shawn Betts + * src/editor.c (editor_insert): use memmove to make room for + inserted string. + * src/window.c (add_to_window_list): only change the window's group and frame if window_mapped is 0. diff --git a/src/editor.c b/src/editor.c index 98147ac..3965464 100644 --- a/src/editor.c +++ b/src/editor.c @@ -443,27 +443,23 @@ static edit_status editor_insert (rp_input_line *line, char *keysym_buf) { int nbytes; - int i; PRINT_DEBUG (("keysym_buf: '%s'\n", keysym_buf)); nbytes = strlen (keysym_buf); if (line->length + nbytes > line->size - 1) { + /* FIXME: This seems like a very bad idea. */ line->size += nbytes + 100; line->buffer = xrealloc (line->buffer, line->size); } - for (i = line->length + nbytes; i > line->position; i--) - line->buffer[i] = line->buffer[i - nbytes]; - + memmove (&line->buffer[line->position + nbytes], &line->buffer[line->position], line->length - line->position); strncpy (&line->buffer[line->position], keysym_buf, nbytes); line->length += nbytes; line->position += nbytes; - PRINT_DEBUG (("line->buffer: '%s'\n", line->buffer)); - return EDIT_INSERT; } -- cgit v1.2.3