comparison src/search.c @ 32856:06562c9307dd v9.0.1738

patch 9.0.1738: Duplicate code to reverse a string Commit: https://github.com/vim/vim/commit/4dd266cb66d901cf5324f09405cfea3f004bd29f Author: zeertzjq <zeertzjq@outlook.com> Date: Sat Aug 19 11:35:03 2023 +0200 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: #12847 Signed-off-by: Christian Brabandt <cb@256bit.org> Co-authored-by: zeertzjq <zeertzjq@outlook.com>
author Christian Brabandt <cb@256bit.org>
date Sat, 19 Aug 2023 11:45:04 +0200
parents 695b50472e85
children d7cfd8fb1d75
comparison
equal deleted inserted replaced
32855:2bf128c65a66 32856:06562c9307dd
200 char_u * 200 char_u *
201 get_search_pat(void) 201 get_search_pat(void)
202 { 202 {
203 return mr_pattern; 203 return mr_pattern;
204 } 204 }
205
206 #if defined(FEAT_RIGHTLEFT) || defined(PROTO)
207 /*
208 * Reverse text into allocated memory.
209 * Returns the allocated string, NULL when out of memory.
210 */
211 char_u *
212 reverse_text(char_u *s)
213 {
214 unsigned len;
215 unsigned s_i, rev_i;
216 char_u *rev;
217
218 /*
219 * Reverse the pattern.
220 */
221 len = (unsigned)STRLEN(s);
222 rev = alloc(len + 1);
223 if (rev == NULL)
224 return NULL;
225
226 rev_i = len;
227 for (s_i = 0; s_i < len; ++s_i)
228 {
229 if (has_mbyte)
230 {
231 int mb_len;
232
233 mb_len = (*mb_ptr2len)(s + s_i);
234 rev_i -= mb_len;
235 mch_memmove(rev + rev_i, s + s_i, mb_len);
236 s_i += mb_len - 1;
237 }
238 else
239 rev[--rev_i] = s[s_i];
240
241 }
242 rev[len] = NUL;
243 return rev;
244 }
245 #endif
246 205
247 void 206 void
248 save_re_pat(int idx, char_u *pat, int magic) 207 save_re_pat(int idx, char_u *pat, int magic)
249 { 208 {
250 if (spats[idx].pat == pat) 209 if (spats[idx].pat == pat)