/[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 300 by ph10, Mon Jan 14 19:43:19 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 2688  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 */      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 2704  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        /* 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        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        contain a zillion UTF-8 characters no longer overwrite the work space
2710        (which is on the stack). */        (which is on the stack). */
2711    
2712        if (lengthptr != NULL)        if (lengthptr != NULL)
2713          {          {
2714          *lengthptr += class_utf8data - class_utf8data_base;          *lengthptr += class_utf8data - class_utf8data_base;
2715          class_utf8data = class_utf8data_base;          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 */

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

  ViewVC Help
Powered by ViewVC 1.1.5