summaryrefslogtreecommitdiffstats
path: root/quiz
diff options
context:
space:
mode:
authordbj <dbj@NetBSD.org>2002-08-06 03:39:44 +0000
committerdbj <dbj@NetBSD.org>2002-08-06 03:39:44 +0000
commit558fcb69409d5a4a16925f496caf7bb7b1062bc9 (patch)
tree4d1c3978b533e80c48c4538050b4588057c1a40b /quiz
parenta26880c9f0ef11de16ef7cb99e3ad1197ee2f8f0 (diff)
downloadbsdgames-darwin-558fcb69409d5a4a16925f496caf7bb7b1062bc9.tar.gz
bsdgames-darwin-558fcb69409d5a4a16925f496caf7bb7b1062bc9.tar.zst
bsdgames-darwin-558fcb69409d5a4a16925f496caf7bb7b1062bc9.zip
fix regular expression matcher.
the string "xc" was failing to match "x[[a|b]|c]"
Diffstat (limited to 'quiz')
-rw-r--r--quiz/rxp.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/quiz/rxp.c b/quiz/rxp.c
index 8531718b..cd8b223d 100644
--- a/quiz/rxp.c
+++ b/quiz/rxp.c
@@ -1,4 +1,4 @@
-/* $NetBSD: rxp.c,v 1.7 1999/09/08 21:17:56 jsm Exp $ */
+/* $NetBSD: rxp.c,v 1.8 2002/08/06 03:39:44 dbj Exp $ */
/*-
* Copyright (c) 1991, 1993
@@ -42,7 +42,7 @@
#if 0
static char sccsid[] = "@(#)rxp.c 8.1 (Berkeley) 5/31/93";
#else
-__RCSID("$NetBSD: rxp.c,v 1.7 1999/09/08 21:17:56 jsm Exp $");
+__RCSID("$NetBSD: rxp.c,v 1.8 2002/08/06 03:39:44 dbj Exp $");
#endif
#endif /* not lint */
@@ -227,7 +227,7 @@ rxp__match(s, first, j_succ, j_fail, sp_fail)
if (ch != *sp++) {
rp = j_fail;
sp = sp_fail;
- return (TRUE);
+ return (FALSE);
}
rp++;
break;
@@ -247,16 +247,17 @@ rxp__match(s, first, j_succ, j_fail, sp_fail)
break;
case ALT_S:
rp++;
- if ((err = rxp__match(sp,
- FALSE, grp_end, rxpbuf + *rp++, sp)) != TRUE)
- return (err);
+ rxp__match(sp, FALSE, grp_end, rxpbuf + *rp++, sp);
break;
case ALT_E:
rp = j_succ;
return (TRUE);
case GRP_E:
- default:
+ rp = j_fail;
+ sp = sp_fail;
return (FALSE);
+ default:
+ abort();
}
return (*rp != END ? FALSE : TRUE);
}