commit a1d083f
default
·
2023-08-14 07:03:05 +0000 UTC
parent c8d535a
Backport from xs.
2 files changed,
+7,
-5
M
xs.h
M
xs.h
+6,
-4
1@@ -449,16 +449,18 @@ xs_str *xs_replace_in(xs_str *str, const char *sfrom, const char *sto, int times
2
3 int sfsz = strlen(sfrom);
4 int stsz = strlen(sto);
5+ int diff = stsz - sfsz;
6 char *ss;
7 int offset = 0;
8
9 while (times > 0 && (ss = strstr(str + offset, sfrom)) != NULL) {
10 int n_offset = ss - str;
11
12- if (sfsz != stsz) {
13- str = xs_collapse(str, n_offset, sfsz);
14- str = xs_expand(str, n_offset, stsz);
15- }
16+ if (diff < 0)
17+ str = xs_collapse(str, n_offset, -diff);
18+ else
19+ if (diff > 0)
20+ str = xs_expand(str, n_offset, diff);
21
22 memcpy(str + n_offset, sto, stsz);
23
+1,
-1
1@@ -1 +1 @@
2-/* 0efaa0cfce82c0f8f7bde81359a2c55a41928af3 */
3+/* 5b007ed034f8598be964d72f5becf24b379a7dd8 */