# HG changeset patch # User Andrew Innes # Date 972396055 0 # Node ID 2a7f61d7ae121e23807299d43af3eb08785b3871 # Parent 2b3e80a729bd3f52ff3919b5a1586e47420957b0 (IMMEDIATE_QUIT_CHECK): New macro, which does QUIT on NT-Emacs only. (re_match_2_internal): Use IMMEDIATE_QUIT_CHECK instead of QUIT, so that re_search functions only quit when callers expect them to. diff -r 2b3e80a729bd -r 2a7f61d7ae12 src/regex.c --- a/src/regex.c Tue Oct 24 12:41:23 2000 +0000 +++ b/src/regex.c Tue Oct 24 14:00:55 2000 +0000 @@ -2034,10 +2034,15 @@ } #endif -/* QUIT is only used on NTemacs. */ -#if !defined WINDOWSNT || !defined emacs || !defined QUIT -# undef QUIT -# define QUIT +/* Explicit quit checking is only used on NTemacs. */ +#if defined WINDOWSNT && defined emacs && defined QUIT +extern int immediate_quit; +# define IMMEDIATE_QUIT_CHECK \ + do { \ + if (immediate_quit) QUIT; \ + } while (0) +#else +# define IMMEDIATE_QUIT_CHECK (0) #endif #ifndef MATCH_MAY_ALLOCATE @@ -5291,7 +5296,7 @@ the repetition text and either the following jump or pop_failure_jump back to this on_failure_jump. */ case on_failure_jump: - QUIT; + IMMEDIATE_QUIT_CHECK; EXTRACT_NUMBER_AND_INCR (mcnt, p); DEBUG_PRINT3 ("EXECUTING on_failure_jump %d (to %p):\n", mcnt, p + mcnt); @@ -5307,7 +5312,7 @@ then we can use a non-backtracking loop based on on_failure_keep_string_jump instead of on_failure_jump. */ case on_failure_jump_smart: - QUIT; + IMMEDIATE_QUIT_CHECK; EXTRACT_NUMBER_AND_INCR (mcnt, p); DEBUG_PRINT3 ("EXECUTING on_failure_jump_smart %d (to %p).\n", mcnt, p + mcnt); @@ -5345,7 +5350,7 @@ /* Unconditionally jump (without popping any failure points). */ case jump: unconditional_jump: - QUIT; + IMMEDIATE_QUIT_CHECK; EXTRACT_NUMBER_AND_INCR (mcnt, p); /* Get the amount to jump. */ DEBUG_PRINT2 ("EXECUTING jump %d ", mcnt); p += mcnt; /* Do the jump. */ @@ -5599,7 +5604,7 @@ /* We goto here if a matching operation fails. */ fail: - QUIT; + IMMEDIATE_QUIT_CHECK; if (!FAIL_STACK_EMPTY ()) { re_char *str;