summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2016-10-26 20:31:12 -0700
committerKaz Kylheku <kaz@kylheku.com>2016-10-26 20:31:12 -0700
commit6e997a72646772a6b7fecdaf0bf1f2d2eb578496 (patch)
treec8bf596d7e9acbd39f6a4a1924b19c55892a935a
parent8b28fb9f37dc99889f099e690365b5a336e08f68 (diff)
downloadtxr-6e997a72646772a6b7fecdaf0bf1f2d2eb578496.tar.gz
txr-6e997a72646772a6b7fecdaf0bf1f2d2eb578496.tar.bz2
txr-6e997a72646772a6b7fecdaf0bf1f2d2eb578496.zip
Fix regression: broken tok_where.
* lib.c (tok_where): Check that the regex match succeeded before destructuring the result with range_bind.
-rw-r--r--lib.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/lib.c b/lib.c
index f77ba01a..fb50af57 100644
--- a/lib.c
+++ b/lib.c
@@ -4052,17 +4052,20 @@ val tok_where(val str, val tok_regex)
for (;;) {
val range = range_regex(str, tok_regex, pos, nil);
- range_bind (match_start, match_end, range);
- if (!match_start)
- break;
+ if (range) {
+ range_bind (match_start, match_end, range);
- iter = list_collect(iter, range);
+ iter = list_collect(iter, range);
- pos = match_end;
+ pos = match_end;
- if (numeq(match_end, match_start))
- pos = plus(pos, one);
+ if (numeq(match_end, match_start))
+ pos = plus(pos, one);
+ continue;
+ }
+
+ break;
}
return out;