Provide better error for invalid match index in RE-MATCH-EXTRACT.
authorChris Hanson <org/chris-hanson/cph>
Sat, 26 Jul 2008 07:10:27 +0000 (07:10 +0000)
committerChris Hanson <org/chris-hanson/cph>
Sat, 26 Jul 2008 07:10:27 +0000 (07:10 +0000)
v7/src/runtime/regexp.scm

index fa1bc9556179a74ffcf6e7fc99e843f45188ad8f..cd6d628b2e6fc78bf9d56d68c06678e1a02798db 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Id: regexp.scm,v 1.18 2008/01/30 20:02:34 cph Exp $
+$Id: regexp.scm,v 1.19 2008/07/26 07:10:27 cph Exp $
 
 Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
     1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
@@ -79,9 +79,11 @@ USA.
                  (lambda () (set-re-registers! registers*)))))
 
 (define (re-match-extract string regs i)
-  (substring string
-            (re-match-start-index i regs)
-            (re-match-end-index i regs)))
+  (let ((start (re-match-start-index i regs))
+       (end (re-match-end-index i regs)))
+    (if (not (and start end))
+       (error:bad-range-argument i 'RE-MATCH-EXTRACT))
+    (substring string start end)))
 \f
 (define (make-substring-operation primitive)
   (lambda (regexp string start end #!optional case-fold? syntax-table)