Path: seismo!harvard!talcott!panda!sources-request From: sources-request@panda.UUCP Newsgroups: mod.sources Subject: bug in regexp(3), and fix Message-ID: <1379@panda.UUCP> Date: 6 Feb 86 14:16:21 GMT Sender: jpn@panda.UUCP Lines: 26 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