diff options
author | dbj <dbj@NetBSD.org> | 2002-08-06 03:39:44 +0000 |
---|---|---|
committer | dbj <dbj@NetBSD.org> | 2002-08-06 03:39:44 +0000 |
commit | 558fcb69409d5a4a16925f496caf7bb7b1062bc9 (patch) | |
tree | 4d1c3978b533e80c48c4538050b4588057c1a40b /quiz | |
parent | a26880c9f0ef11de16ef7cb99e3ad1197ee2f8f0 (diff) | |
download | bsdgames-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.c | 15 |
1 files changed, 8 insertions, 7 deletions
@@ -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); } |