home *** CD-ROM | disk | FTP | other *** search
- Subject: bug in regexp(3), and fix
- Newsgroups: mod.sources
- Approved: jpn@panda.UUCP
-
- Mod.sources: Volume 3, Issue 105
- Submitted by: genrad!decvax!utzoo!henry
-
- Drat! Chris Siebenmann at CSRI just found a bug in my regexp(3) routines.
- The problem is that the code for character classes does not check properly
- for the possibility that it might be looking at the end of the string. By
- simple bad luck none of my test cases hit this. To fix it, make the
- following two changes to regexp.c:
-
- 848c848
- < if (strchr(OPERAND(scan), *reginput) == NULL)
- ---
- > if (*reginput == '\0' || strchr(OPERAND(scan), *reginput) == NULL)
- 853c853
- < if (strchr(OPERAND(scan), *reginput) != NULL)
- ---
- > if (*reginput == '\0' || strchr(OPERAND(scan), *reginput) != NULL)
-
- and recompile. Also, add the following line to the "tests" file:
-
- [k] ab n - -
-
- My thanks to Chris for finding this.
-
- Henry Spencer @ U of Toronto Zoology
- {allegra,ihnp4,linus,decvax}!utzoo!henry
-
-
-