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

Diff of /code/trunk/pcre_exec.c

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

revision 1047 by zherczeg, Fri Sep 28 15:06:38 2012 UTC revision 1055 by chpe, Tue Oct 16 15:53:30 2012 UTC
# Line 1273  for (;;) Line 1273  for (;;)
1273          cb.version          = 2;   /* Version 1 of the callout block */          cb.version          = 2;   /* Version 1 of the callout block */
1274          cb.callout_number   = ecode[LINK_SIZE+2];          cb.callout_number   = ecode[LINK_SIZE+2];
1275          cb.offset_vector    = md->offset_vector;          cb.offset_vector    = md->offset_vector;
1276  #ifdef COMPILE_PCRE8  #if defined COMPILE_PCRE8
1277          cb.subject          = (PCRE_SPTR)md->start_subject;          cb.subject          = (PCRE_SPTR)md->start_subject;
1278  #else  #elif defined COMPILE_PCRE16
1279          cb.subject          = (PCRE_SPTR16)md->start_subject;          cb.subject          = (PCRE_SPTR16)md->start_subject;
1280    #elif defined COMPILE_PCRE32
1281            cb.subject          = (PCRE_SPTR32)md->start_subject;
1282  #endif  #endif
1283          cb.subject_length   = (int)(md->end_subject - md->start_subject);          cb.subject_length   = (int)(md->end_subject - md->start_subject);
1284          cb.start_match      = (int)(mstart - md->start_subject);          cb.start_match      = (int)(mstart - md->start_subject);
# Line 1696  for (;;) Line 1698  for (;;)
1698        cb.version          = 2;   /* Version 1 of the callout block */        cb.version          = 2;   /* Version 1 of the callout block */
1699        cb.callout_number   = ecode[1];        cb.callout_number   = ecode[1];
1700        cb.offset_vector    = md->offset_vector;        cb.offset_vector    = md->offset_vector;
1701  #ifdef COMPILE_PCRE8  #if defined COMPILE_PCRE8
1702        cb.subject          = (PCRE_SPTR)md->start_subject;        cb.subject          = (PCRE_SPTR)md->start_subject;
1703  #else  #elif defined COMPILE_PCRE16
1704        cb.subject          = (PCRE_SPTR16)md->start_subject;        cb.subject          = (PCRE_SPTR16)md->start_subject;
1705    #elif defined COMPILE_PCRE32
1706          cb.subject          = (PCRE_SPTR32)md->start_subject;
1707  #endif  #endif
1708        cb.subject_length   = (int)(md->end_subject - md->start_subject);        cb.subject_length   = (int)(md->end_subject - md->start_subject);
1709        cb.start_match      = (int)(mstart - md->start_subject);        cb.start_match      = (int)(mstart - md->start_subject);
# Line 4558  for (;;) Line 4562  for (;;)
4562              case CHAR_VT:              case CHAR_VT:
4563              case CHAR_FF:              case CHAR_FF:
4564              case CHAR_NEL:              case CHAR_NEL:
4565  #ifdef COMPILE_PCRE16  #if defined COMPILE_PCRE16 || defined COMPILE_PCRE32
4566              case 0x2028:              case 0x2028:
4567              case 0x2029:              case 0x2029:
4568  #endif  #endif
# Line 4580  for (;;) Line 4584  for (;;)
4584              {              {
4585              default: break;              default: break;
4586              HSPACE_BYTE_CASES:              HSPACE_BYTE_CASES:
4587  #ifdef COMPILE_PCRE16  #if defined COMPILE_PCRE16 || defined COMPILE_PCRE32
4588              HSPACE_MULTIBYTE_CASES:              HSPACE_MULTIBYTE_CASES:
4589  #endif  #endif
4590              RRETURN(MATCH_NOMATCH);              RRETURN(MATCH_NOMATCH);
# Line 4600  for (;;) Line 4604  for (;;)
4604              {              {
4605              default: RRETURN(MATCH_NOMATCH);              default: RRETURN(MATCH_NOMATCH);
4606              HSPACE_BYTE_CASES:              HSPACE_BYTE_CASES:
4607  #ifdef COMPILE_PCRE16  #if defined COMPILE_PCRE16 || defined COMPILE_PCRE32
4608              HSPACE_MULTIBYTE_CASES:              HSPACE_MULTIBYTE_CASES:
4609  #endif  #endif
4610              break;              break;
# Line 4619  for (;;) Line 4623  for (;;)
4623            switch(*eptr++)            switch(*eptr++)
4624              {              {
4625              VSPACE_BYTE_CASES:              VSPACE_BYTE_CASES:
4626  #ifdef COMPILE_PCRE16  #if defined COMPILE_PCRE16 || defined COMPILE_PCRE32
4627              VSPACE_MULTIBYTE_CASES:              VSPACE_MULTIBYTE_CASES:
4628  #endif  #endif
4629              RRETURN(MATCH_NOMATCH);              RRETURN(MATCH_NOMATCH);
# Line 4640  for (;;) Line 4644  for (;;)
4644              {              {
4645              default: RRETURN(MATCH_NOMATCH);              default: RRETURN(MATCH_NOMATCH);
4646              VSPACE_BYTE_CASES:              VSPACE_BYTE_CASES:
4647  #ifdef COMPILE_PCRE16  #if defined COMPILE_PCRE16 || defined COMPILE_PCRE32
4648              VSPACE_MULTIBYTE_CASES:              VSPACE_MULTIBYTE_CASES:
4649  #endif  #endif
4650              break;              break;
# Line 5158  for (;;) Line 5162  for (;;)
5162                case CHAR_VT:                case CHAR_VT:
5163                case CHAR_FF:                case CHAR_FF:
5164                case CHAR_NEL:                case CHAR_NEL:
5165  #ifdef COMPILE_PCRE16  #if defined COMPILE_PCRE16 || defined COMPILE_PCRE32
5166                case 0x2028:                case 0x2028:
5167                case 0x2029:                case 0x2029:
5168  #endif  #endif
# Line 5172  for (;;) Line 5176  for (;;)
5176                {                {
5177                default: break;                default: break;
5178                HSPACE_BYTE_CASES:                HSPACE_BYTE_CASES:
5179  #ifdef COMPILE_PCRE16  #if defined COMPILE_PCRE16 || defined COMPILE_PCRE32
5180                HSPACE_MULTIBYTE_CASES:                HSPACE_MULTIBYTE_CASES:
5181  #endif  #endif
5182                RRETURN(MATCH_NOMATCH);                RRETURN(MATCH_NOMATCH);
# Line 5184  for (;;) Line 5188  for (;;)
5188                {                {
5189                default: RRETURN(MATCH_NOMATCH);                default: RRETURN(MATCH_NOMATCH);
5190                HSPACE_BYTE_CASES:                HSPACE_BYTE_CASES:
5191  #ifdef COMPILE_PCRE16  #if defined COMPILE_PCRE16 || defined COMPILE_PCRE32
5192                HSPACE_MULTIBYTE_CASES:                HSPACE_MULTIBYTE_CASES:
5193  #endif  #endif
5194                break;                break;
# Line 5196  for (;;) Line 5200  for (;;)
5200                {                {
5201                default: break;                default: break;
5202                VSPACE_BYTE_CASES:                VSPACE_BYTE_CASES:
5203  #ifdef COMPILE_PCRE16  #if defined COMPILE_PCRE16 || defined COMPILE_PCRE32
5204                VSPACE_MULTIBYTE_CASES:                VSPACE_MULTIBYTE_CASES:
5205  #endif  #endif
5206                RRETURN(MATCH_NOMATCH);                RRETURN(MATCH_NOMATCH);
# Line 5208  for (;;) Line 5212  for (;;)
5212                {                {
5213                default: RRETURN(MATCH_NOMATCH);                default: RRETURN(MATCH_NOMATCH);
5214                VSPACE_BYTE_CASES:                VSPACE_BYTE_CASES:
5215  #ifdef COMPILE_PCRE16  #if defined COMPILE_PCRE16 || defined COMPILE_PCRE32
5216                VSPACE_MULTIBYTE_CASES:                VSPACE_MULTIBYTE_CASES:
5217  #endif  #endif
5218                break;                break;
# Line 5840  for (;;) Line 5844  for (;;)
5844                {                {
5845                if (c != CHAR_LF && (md->bsr_anycrlf ||                if (c != CHAR_LF && (md->bsr_anycrlf ||
5846                   (c != CHAR_VT && c != CHAR_FF && c != CHAR_NEL                   (c != CHAR_VT && c != CHAR_FF && c != CHAR_NEL
5847  #ifdef COMPILE_PCRE16  #if defined COMPILE_PCRE16 || defined COMPILE_PCRE32
5848                   && c != 0x2028 && c != 0x2029                   && c != 0x2028 && c != 0x2029
5849  #endif  #endif
5850                   ))) break;                   ))) break;
# Line 5861  for (;;) Line 5865  for (;;)
5865                {                {
5866                default: eptr++; break;                default: eptr++; break;
5867                HSPACE_BYTE_CASES:                HSPACE_BYTE_CASES:
5868  #ifdef COMPILE_PCRE16  #if defined COMPILE_PCRE16 || defined COMPILE_PCRE32
5869                HSPACE_MULTIBYTE_CASES:                HSPACE_MULTIBYTE_CASES:
5870  #endif  #endif
5871                goto ENDLOOP00;                goto ENDLOOP00;
# Line 5882  for (;;) Line 5886  for (;;)
5886                {                {
5887                default: goto ENDLOOP01;                default: goto ENDLOOP01;
5888                HSPACE_BYTE_CASES:                HSPACE_BYTE_CASES:
5889  #ifdef COMPILE_PCRE16  #if defined COMPILE_PCRE16 || defined COMPILE_PCRE32
5890                HSPACE_MULTIBYTE_CASES:                HSPACE_MULTIBYTE_CASES:
5891  #endif  #endif
5892                eptr++; break;                eptr++; break;
# Line 5903  for (;;) Line 5907  for (;;)
5907                {                {
5908                default: eptr++; break;                default: eptr++; break;
5909                VSPACE_BYTE_CASES:                VSPACE_BYTE_CASES:
5910  #ifdef COMPILE_PCRE16  #if defined COMPILE_PCRE16 || defined COMPILE_PCRE32
5911                VSPACE_MULTIBYTE_CASES:                VSPACE_MULTIBYTE_CASES:
5912  #endif  #endif
5913                goto ENDLOOP02;                goto ENDLOOP02;
# Line 5924  for (;;) Line 5928  for (;;)
5928                {                {
5929                default: goto ENDLOOP03;                default: goto ENDLOOP03;
5930                VSPACE_BYTE_CASES:                VSPACE_BYTE_CASES:
5931  #ifdef COMPILE_PCRE16  #if defined COMPILE_PCRE16 || defined COMPILE_PCRE32
5932                VSPACE_MULTIBYTE_CASES:                VSPACE_MULTIBYTE_CASES:
5933  #endif  #endif
5934                eptr++; break;                eptr++; break;
# Line 6197  Returns:          > 0 => success; value Line 6201  Returns:          > 0 => success; value
6201                   < -1 => some kind of unexpected problem                   < -1 => some kind of unexpected problem
6202  */  */
6203    
6204  #ifdef COMPILE_PCRE8  #if defined COMPILE_PCRE8
6205  PCRE_EXP_DEFN int PCRE_CALL_CONVENTION  PCRE_EXP_DEFN int PCRE_CALL_CONVENTION
6206  pcre_exec(const pcre *argument_re, const pcre_extra *extra_data,  pcre_exec(const pcre *argument_re, const pcre_extra *extra_data,
6207    PCRE_SPTR subject, int length, int start_offset, int options, int *offsets,    PCRE_SPTR subject, int length, int start_offset, int options, int *offsets,
6208    int offsetcount)    int offsetcount)
6209  #else  #elif defined COMPILE_PCRE16
6210  PCRE_EXP_DEFN int PCRE_CALL_CONVENTION  PCRE_EXP_DEFN int PCRE_CALL_CONVENTION
6211  pcre16_exec(const pcre16 *argument_re, const pcre16_extra *extra_data,  pcre16_exec(const pcre16 *argument_re, const pcre16_extra *extra_data,
6212    PCRE_SPTR16 subject, int length, int start_offset, int options, int *offsets,    PCRE_SPTR16 subject, int length, int start_offset, int options, int *offsets,
6213    int offsetcount)    int offsetcount)
6214    #elif defined COMPILE_PCRE32
6215    PCRE_EXP_DEFN int PCRE_CALL_CONVENTION
6216    pcre32_exec(const pcre32 *argument_re, const pcre32_extra *extra_data,
6217      PCRE_SPTR32 subject, int length, int start_offset, int options, int *offsets,
6218      int offsetcount)
6219  #endif  #endif
6220  {  {
6221  int rc, ocount, arg_offset_max;  int rc, ocount, arg_offset_max;
# Line 6297  if (utf && (options & PCRE_NO_UTF8_CHECK Line 6306  if (utf && (options & PCRE_NO_UTF8_CHECK
6306        offsets[0] = erroroffset;        offsets[0] = erroroffset;
6307        offsets[1] = errorcode;        offsets[1] = errorcode;
6308        }        }
6309  #ifdef COMPILE_PCRE16  #if defined COMPILE_PCRE8
     return (errorcode <= PCRE_UTF16_ERR1 && md->partial > 1)?  
       PCRE_ERROR_SHORTUTF16 : PCRE_ERROR_BADUTF16;  
 #else  
6310      return (errorcode <= PCRE_UTF8_ERR5 && md->partial > 1)?      return (errorcode <= PCRE_UTF8_ERR5 && md->partial > 1)?
6311        PCRE_ERROR_SHORTUTF8 : PCRE_ERROR_BADUTF8;        PCRE_ERROR_SHORTUTF8 : PCRE_ERROR_BADUTF8;
6312    #elif defined COMPILE_PCRE16
6313        return (errorcode <= PCRE_UTF16_ERR1 && md->partial > 1)?
6314          PCRE_ERROR_SHORTUTF16 : PCRE_ERROR_BADUTF16;
6315    #elif defined COMPILE_PCRE32
6316        return PCRE_ERROR_BADUTF32;
6317  #endif  #endif
6318      }      }
6319    #if defined COMPILE_PCRE8 || defined COMPILE_PCRE16
6320    /* Check that a start_offset points to the start of a UTF character. */    /* Check that a start_offset points to the start of a UTF character. */
6321    if (start_offset > 0 && start_offset < length &&    if (start_offset > 0 && start_offset < length &&
6322        NOT_FIRSTCHAR(((PCRE_PUCHAR)subject)[start_offset]))        NOT_FIRSTCHAR(((PCRE_PUCHAR)subject)[start_offset]))
6323      return PCRE_ERROR_BADUTF8_OFFSET;      return PCRE_ERROR_BADUTF8_OFFSET;
6324    #endif
6325    }    }
6326  #endif  #endif
6327    

Legend:
Removed from v.1047  
changed lines
  Added in v.1055

  ViewVC Help
Powered by ViewVC 1.1.5