summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichele Bini <michele.bini@gmail.com>2022-08-27 00:19:18 (GMT)
committerMichele Bini <michele.bini@gmail.com>2022-08-27 00:19:18 (GMT)
commit84557ccf578ded16467fab36529ffa16333dfab5 (patch)
tree2f267d311f41cd66d744a3b7d5eae9032cdc8be1
parent59ba28e7607d7d2d5d2f7a59f026d4edfa7c1242 (diff)
simplify string insert; attempts to fix redisplay after pasting lines
-rw-r--r--nanobox.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/nanobox.c b/nanobox.c
index 781ff4b..fec354c 100644
--- a/nanobox.c
+++ b/nanobox.c
@@ -634,12 +634,12 @@ static void showmatching(char *); // show the matching pair () [] {}
int nano_stdio_mode = 0;
#endif
#if ENABLE_FEATURE_NANO_YANKMARK || ENABLE_FEATURE_NANO_SEARCH || ENABLE_FEATURE_NANO_CRASHME
-// might reallocate text[]! use p += string_insert(p, ...),
+// might reallocate text[]! use p = string_insert(p, ...),
// and be careful to not use pointers into potentially freed text[]!
# if !ENABLE_FEATURE_NANO_UNDO
#define string_insert(a,b,c) string_insert(a,b)
# endif
-static uintptr_t string_insert(char *, const char *, int); // insert the string at 'p'
+static char *string_insert(char *, const char *, int); // insert the string at 'p'
#endif
#if ENABLE_FEATURE_NANO_YANKMARK
static char *text_yank(char *, char *); // save copy of "p" into a register
@@ -1897,7 +1897,7 @@ static void show_help(void)
|| ENABLE_FEATURE_NANO_CRASHME
// might reallocate text[]! use p += string_insert(p, ...),
// and be careful to not use pointers into potentially freed text[]!
-static uintptr_t string_insert(char *p, const char *s, int undo) // insert the string at 'p'
+static char * string_insert(char *p, const char *s, int undo) // insert the string at 'p'
{
uintptr_t bias;
int i;
@@ -1926,7 +1926,7 @@ static uintptr_t string_insert(char *p, const char *s, int undo) // insert the s
if (cnt > 4) status_line("Put %d lines (%d chars)", cnt, i);
}
#endif
- return bias;
+ return p;
}
#endif
@@ -2764,7 +2764,7 @@ static void newline_cmd(void)
s = xstrndup(a, (b - a));
s[b - a];
dot = char_insert(dot, '\n', ALLOW_UNDO_QUEUED);
- dot += string_insert(dot, s, ALLOW_UNDO) + b - a;
+ dot = string_insert(dot, s, ALLOW_UNDO) + b - a;
free(s);
} else {
dot = char_insert(dot, '\n', ALLOW_UNDO_QUEUED);
@@ -2948,7 +2948,7 @@ static void do_cmd(int c)
status_line_bold("Nothing in clipboard");
break;
}
- dot += string_insert(dot, clipboard, ALLOW_UNDO); // insert the string
+ dot = string_insert(dot, clipboard, ALLOW_UNDO); // insert the string
yank_append = 0;
break;
#endif