summaryrefslogtreecommitdiff
path: root/libguile/regex-posix.c
diff options
context:
space:
mode:
authorJim Blandy <jimb@red-bean.com>1998-11-23 10:24:09 +0000
committerJim Blandy <jimb@red-bean.com>1998-11-23 10:24:09 +0000
commit7c7471d93b0b568e355515409fff2a335911d2a9 (patch)
tree997d0c7badd0dba9beebdc5814a670e19d1da89a /libguile/regex-posix.c
parentc04e89c78a63cbf18fdccbf806b18b2fd7fc4567 (diff)
downloadguile-7c7471d93b0b568e355515409fff2a335911d2a9.tar.gz
* regex-posix.c (scm_regexp_exec): Reliably mark unmatched
subexpressions. (Thanks to Charbel Jacquin.)
Diffstat (limited to 'libguile/regex-posix.c')
-rw-r--r--libguile/regex-posix.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/libguile/regex-posix.c b/libguile/regex-posix.c
index 0ac816c07..9b1ec0767 100644
--- a/libguile/regex-posix.c
+++ b/libguile/regex-posix.c
@@ -252,8 +252,12 @@ scm_regexp_exec (SCM rx, SCM str, SCM start, SCM flags)
mvec = scm_make_vector (SCM_MAKINUM (nmatches + 1), SCM_UNSPECIFIED);
SCM_VELTS(mvec)[0] = str;
for (i = 0; i < nmatches; ++i)
- SCM_VELTS(mvec)[i+1] = scm_cons(SCM_MAKINUM(matches[i].rm_so + offset),
- SCM_MAKINUM(matches[i].rm_eo + offset));
+ if (matches[i].rm_so == -1)
+ SCM_VELTS(mvec)[i+1] = scm_cons (SCM_MAKINUM (-1), SCM_MAKINUM (-1));
+ else
+ SCM_VELTS(mvec)[i+1]
+ = scm_cons(SCM_MAKINUM(matches[i].rm_so + offset),
+ SCM_MAKINUM(matches[i].rm_eo + offset));
}
scm_must_free ((char *) matches);
SCM_ALLOW_INTS;