~ chicken-core (chicken-5) 88690836207d7d4c9cc99654da8d071eaf1ba733


commit 88690836207d7d4c9cc99654da8d071eaf1ba733
Author:     Peter Bex <peter.bex@xs4all.nl>
AuthorDate: Tue Sep 6 21:41:44 2011 +0200
Commit:     Peter Bex <peter.bex@xs4all.nl>
CommitDate: Tue Sep 6 21:41:44 2011 +0200

    Apply irregex fix for #687, this makes irregex-replace return the original string instead of #f when the regex did not match (upstream changeset e53cba40b988)

diff --git a/irregex-core.scm b/irregex-core.scm
index c4245cac..982f57e4 100644
--- a/irregex-core.scm
+++ b/irregex-core.scm
@@ -3791,13 +3791,13 @@
 (define (irregex-replace irx str . o)
   (if (not (string? str)) (%irregex-error 'irregex-replace "not a string" str))
   (let ((m (irregex-search irx str)))
-    (and
-     m
-     (string-cat-reverse
-      (cons (substring str (%irregex-match-end-index m 0) (string-length str))
-            (append (irregex-apply-match m o)
-                    (list (substring str 0 (%irregex-match-start-index m 0)))
-                    ))))))
+    (if m
+        (string-cat-reverse
+         (cons (substring str (%irregex-match-end-index m 0) (string-length str))
+               (append (irregex-apply-match m o)
+                       (list (substring str 0 (%irregex-match-start-index m 0)))
+                       )))
+        str)))
 
 (define (irregex-replace/all irx str . o)
   (if (not (string? str)) (%irregex-error 'irregex-replace/all "not a string" str))
diff --git a/tests/test-irregex.scm b/tests/test-irregex.scm
index 23fbcb1e..a06bc6bd 100644
--- a/tests/test-irregex.scm
+++ b/tests/test-irregex.scm
@@ -340,6 +340,8 @@
 (test-group "utils"
   (test-equal "h*llo world"
       (irregex-replace "[aeiou]" "hello world" "*"))
+  (test-equal "hello world"
+      (irregex-replace "[xyz]" "hello world" "*"))
   (test-equal "h*ll* w*rld"
       (irregex-replace/all "[aeiou]" "hello world" "*"))
   (test-equal '("bob@test.com" "fred@example.com")
Trap