/[pcre]/code/trunk/pcre_compile.c
ViewVC logotype

Diff of /code/trunk/pcre_compile.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 298 by ph10, Thu Jan 10 17:09:12 2008 UTC revision 323 by ph10, Wed Mar 5 17:23:42 2008 UTC
# Line 6  Line 6 
6  and semantics are as close as possible to those of the Perl 5 language.  and semantics are as close as possible to those of the Perl 5 language.
7    
8                         Written by Philip Hazel                         Written by Philip Hazel
9             Copyright (c) 1997-2007 University of Cambridge             Copyright (c) 1997-2008 University of Cambridge
10    
11  -----------------------------------------------------------------------------  -----------------------------------------------------------------------------
12  Redistribution and use in source and binary forms, with or without  Redistribution and use in source and binary forms, with or without
# Line 2113  if (next >= 0) switch(op_code) Line 2113  if (next >= 0) switch(op_code)
2113    /* For OP_NOT, "item" must be a single-byte character. */    /* For OP_NOT, "item" must be a single-byte character. */
2114    
2115    case OP_NOT:    case OP_NOT:
   if (next < 0) return FALSE;  /* Not a character */  
2116    if (item == next) return TRUE;    if (item == next) return TRUE;
2117    if ((options & PCRE_CASELESS) == 0) return FALSE;    if ((options & PCRE_CASELESS) == 0) return FALSE;
2118  #ifdef SUPPORT_UTF8  #ifdef SUPPORT_UTF8
# Line 2376  uschar classbits[32]; Line 2375  uschar classbits[32];
2375  BOOL class_utf8;  BOOL class_utf8;
2376  BOOL utf8 = (options & PCRE_UTF8) != 0;  BOOL utf8 = (options & PCRE_UTF8) != 0;
2377  uschar *class_utf8data;  uschar *class_utf8data;
2378    uschar *class_utf8data_base;
2379  uschar utf8_char[6];  uschar utf8_char[6];
2380  #else  #else
2381  BOOL utf8 = FALSE;  BOOL utf8 = FALSE;
# Line 2687  for (;; ptr++) Line 2687  for (;; ptr++)
2687  #ifdef SUPPORT_UTF8  #ifdef SUPPORT_UTF8
2688      class_utf8 = FALSE;                       /* No chars >= 256 */      class_utf8 = FALSE;                       /* No chars >= 256 */
2689      class_utf8data = code + LINK_SIZE + 2;    /* For UTF-8 items */      class_utf8data = code + LINK_SIZE + 2;    /* For UTF-8 items */
2690        class_utf8data_base = class_utf8data;     /* For resetting in pass 1 */
2691  #endif  #endif
2692    
2693      /* Process characters until ] is reached. By writing this as a "do" it      /* Process characters until ] is reached. By writing this as a "do" it
# Line 2702  for (;; ptr++) Line 2703  for (;; ptr++)
2703          {                           /* Braces are required because the */          {                           /* Braces are required because the */
2704          GETCHARLEN(c, ptr, ptr);    /* macro generates multiple statements */          GETCHARLEN(c, ptr, ptr);    /* macro generates multiple statements */
2705          }          }
2706    
2707          /* In the pre-compile phase, accumulate the length of any UTF-8 extra
2708          data and reset the pointer. This is so that very large classes that
2709          contain a zillion UTF-8 characters no longer overwrite the work space
2710          (which is on the stack). */
2711    
2712          if (lengthptr != NULL)
2713            {
2714            *lengthptr += class_utf8data - class_utf8data_base;
2715            class_utf8data = class_utf8data_base;
2716            }
2717    
2718  #endif  #endif
2719    
2720        /* Inside \Q...\E everything is literal except \E */        /* Inside \Q...\E everything is literal except \E */
# Line 5807  to fill in forward references to subpatt Line 5820  to fill in forward references to subpatt
5820    
5821  uschar cworkspace[COMPILE_WORK_SIZE];  uschar cworkspace[COMPILE_WORK_SIZE];
5822    
   
5823  /* Set this early so that early errors get offset 0. */  /* Set this early so that early errors get offset 0. */
5824    
5825  ptr = (const uschar *)pattern;  ptr = (const uschar *)pattern;

Legend:
Removed from v.298  
changed lines
  Added in v.323

  ViewVC Help
Powered by ViewVC 1.1.5