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 */