mirror of
https://github.com/neovim/neovim.git
synced 2025-10-06 01:46:29 +00:00
vim-patch:9.0.1515: reverse() does not work for a String
Problem: reverse() does not work for a String. Solution: Implement reverse() for a String. (Yegappan Lakshmanan, closes vim/vim#12179)03ff1c2dde
vim-patch:9.0.1738: Duplicate code to reverse a string Problem: Duplicate code to reverse a string Solution: Move reverse_text() to strings.c and remove string_reverse(). closes: vim/vim#128474dd266cb66
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
This commit is contained in:
@@ -2168,20 +2168,17 @@ int kv_do_printf(StringBuilder *str, const char *fmt, ...)
|
||||
///
|
||||
/// @return the allocated string.
|
||||
char *reverse_text(char *s)
|
||||
FUNC_ATTR_NONNULL_RET
|
||||
FUNC_ATTR_NONNULL_ALL FUNC_ATTR_NONNULL_RET
|
||||
{
|
||||
// Reverse the pattern.
|
||||
size_t len = strlen(s);
|
||||
char *rev = xmalloc(len + 1);
|
||||
size_t rev_i = len;
|
||||
for (size_t s_i = 0; s_i < len; s_i++) {
|
||||
for (size_t s_i = 0, rev_i = len; s_i < len; s_i++) {
|
||||
const int mb_len = utfc_ptr2len(s + s_i);
|
||||
rev_i -= (size_t)mb_len;
|
||||
memmove(rev + rev_i, s + s_i, (size_t)mb_len);
|
||||
s_i += (size_t)mb_len - 1;
|
||||
}
|
||||
rev[len] = NUL;
|
||||
|
||||
return rev;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user