Mercurial > emacs
changeset 1689:5da6b5575f48
*** empty log message ***
author | Jim Blandy <jimb@redhat.com> |
---|---|
date | Mon, 14 Dec 1992 02:28:29 +0000 |
parents | c4da55e6cfd3 |
children | 256b87a92511 |
files | src/regex.c |
diffstat | 1 files changed, 10 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/src/regex.c Sat Dec 12 15:43:12 1992 +0000 +++ b/src/regex.c Mon Dec 14 02:28:29 1992 +0000 @@ -2197,18 +2197,20 @@ unsigned this_char; const char *p = *p_ptr; + int range_start, range_end; - /* Even though the pattern is a signed `char *', we need to fetch into - `unsigned char's. Reason: if the high bit of the pattern character - is set, the range endpoints will be negative if we fetch into a - signed `char *'. */ - unsigned char range_end; - unsigned char range_start = p[-2]; - if (p == pend) return REG_ERANGE; - PATFETCH (range_end); + /* Even though the pattern is a signed `char *', we need to fetch + with unsigned char *'s; if the high bit of the pattern character + is set, the range endpoints will be negative if we fetch using a + signed char *. + + We also want to fetch the endpoints without translating them; the + appropriate translation is done in the bit-setting loop below. */ + range_start = ((unsigned char *) p)[-2]; + range_end = ((unsigned char *) p)[0]; /* Have to increment the pointer into the pattern string, so the caller isn't still at the ending character. */