From 27ddb52d66331a448dff02ab6d9804458a133948 Mon Sep 17 00:00:00 2001 From: Richard Stallman Date: Wed, 17 Aug 1994 23:13:50 +0000 Subject: [PATCH] (regex_compile): Split an if to avoid compiler bug. (re_match_2_internal): Use separate if to compute bestmatch_p. --- regex.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/regex.c b/regex.c index 82ab3d0873..87c3e63edf 100644 --- a/regex.c +++ b/regex.c @@ -1922,19 +1922,23 @@ regex_compile (pattern, size, syntax, bufp) for (ch = 0; ch < 1 << BYTEWIDTH; ch++) { + /* This was split into 3 if's to + avoid an arbitrary limit in some compiler. */ if ( (is_alnum && ISALNUM (ch)) || (is_alpha && ISALPHA (ch)) || (is_blank && ISBLANK (ch)) - || (is_cntrl && ISCNTRL (ch)) - || (is_digit && ISDIGIT (ch)) + || (is_cntrl && ISCNTRL (ch))) + SET_LIST_BIT (ch); + if ( (is_digit && ISDIGIT (ch)) || (is_graph && ISGRAPH (ch)) || (is_lower && ISLOWER (ch)) - || (is_print && ISPRINT (ch)) - || (is_punct && ISPUNCT (ch)) + || (is_print && ISPRINT (ch))) + SET_LIST_BIT (ch); + if ( (is_punct && ISPUNCT (ch)) || (is_space && ISSPACE (ch)) || (is_upper && ISUPPER (ch)) || (is_xdigit && ISXDIGIT (ch))) - SET_LIST_BIT (ch); + SET_LIST_BIT (ch); } had_char_class = true; } @@ -3602,8 +3606,14 @@ re_match_2_internal (bufp, string1, size1, string2, size2, pos, regs, stop) boolean same_str_p = (FIRST_STRING_P (match_end) == MATCHING_IN_FIRST_STRING); /* 1 if this match is the best seen so far. */ - boolean best_match_p = (same_str_p ? d > match_end - : !MATCHING_IN_FIRST_STRING); + boolean best_match_p; + + /* AIX compiler got confused when this was combined + with the previous declaration. */ + if (same_str_p) + best_match_p = d > match_end; + else + best_match_p = !MATCHING_IN_FIRST_STRING; DEBUG_PRINT1 ("backtracking.\n"); -- 2.30.2