wisp
 
(Arne Babenhauserheide)
2013-09-13: more efficient substring, I hope.

more efficient substring, I hope.

diff --git a/wisp-guile.w b/wisp-guile.w
--- a/wisp-guile.w
+++ b/wisp-guile.w
@@ -561,10 +561,14 @@ define : string-replace-substring s subs
        let : : sublen : string-length substring
            let replacer
                : newstring s
-                 index : string-contains s substring
-               if : not : equal? index #f
-                  let : : replaced : string-replace newstring replacement index : + index sublen
-                    replacer replaced : string-contains replaced substring
+                 startindex 0
+                 addindex : string-contains s substring
+               if : not : equal? addindex #f
+                  let*
+                      : index : + startindex addindex
+                        replaced : string-replace newstring replacement index : + index sublen
+                        newaddindex : string-contains (substring/read-only replaced index) substring
+                      replacer replaced index newaddindex
                   . newstring