| 334 |
/* Function local variables */ |
/* Function local variables */ |
| 335 |
|
|
| 336 |
const uschar *Xcallpat; |
const uschar *Xcallpat; |
| 337 |
|
#ifdef SUPPORT_UTF8 |
| 338 |
const uschar *Xcharptr; |
const uschar *Xcharptr; |
| 339 |
|
#endif |
| 340 |
const uschar *Xdata; |
const uschar *Xdata; |
| 341 |
const uschar *Xnext; |
const uschar *Xnext; |
| 342 |
const uschar *Xpp; |
const uschar *Xpp; |
| 362 |
uschar Xocchars[8]; |
uschar Xocchars[8]; |
| 363 |
#endif |
#endif |
| 364 |
|
|
| 365 |
|
int Xcodelink; |
| 366 |
int Xctype; |
int Xctype; |
| 367 |
unsigned int Xfc; |
unsigned int Xfc; |
| 368 |
int Xfi; |
int Xfi; |
| 442 |
register BOOL utf8; /* Local copy of UTF-8 flag for speed */ |
register BOOL utf8; /* Local copy of UTF-8 flag for speed */ |
| 443 |
|
|
| 444 |
BOOL minimize, possessive; /* Quantifier options */ |
BOOL minimize, possessive; /* Quantifier options */ |
| 445 |
|
int condcode; |
| 446 |
|
|
| 447 |
/* When recursion is not being used, all "local" variables that have to be |
/* When recursion is not being used, all "local" variables that have to be |
| 448 |
preserved over calls to RMATCH() are part of a "frame" which is obtained from |
preserved over calls to RMATCH() are part of a "frame" which is obtained from |
| 485 |
#define charptr frame->Xcharptr |
#define charptr frame->Xcharptr |
| 486 |
#endif |
#endif |
| 487 |
#define callpat frame->Xcallpat |
#define callpat frame->Xcallpat |
| 488 |
|
#define codelink frame->Xcodelink |
| 489 |
#define data frame->Xdata |
#define data frame->Xdata |
| 490 |
#define next frame->Xnext |
#define next frame->Xnext |
| 491 |
#define pp frame->Xpp |
#define pp frame->Xpp |
| 567 |
#endif |
#endif |
| 568 |
|
|
| 569 |
int codelink; |
int codelink; |
|
int condcode; |
|
| 570 |
int ctype; |
int ctype; |
| 571 |
int length; |
int length; |
| 572 |
int max; |
int max; |
| 641 |
{ |
{ |
| 642 |
minimize = possessive = FALSE; |
minimize = possessive = FALSE; |
| 643 |
op = *ecode; |
op = *ecode; |
| 644 |
|
|
| 645 |
/* For partial matching, remember if we ever hit the end of the subject after |
/* For partial matching, remember if we ever hit the end of the subject after |
| 646 |
matching at least one subject character. */ |
matching at least one subject character. */ |
| 647 |
|
|
| 794 |
case OP_COND: |
case OP_COND: |
| 795 |
case OP_SCOND: |
case OP_SCOND: |
| 796 |
codelink= GET(ecode, 1); |
codelink= GET(ecode, 1); |
| 797 |
|
|
| 798 |
/* Because of the way auto-callout works during compile, a callout item is |
/* Because of the way auto-callout works during compile, a callout item is |
| 799 |
inserted between OP_COND and an assertion condition. */ |
inserted between OP_COND and an assertion condition. */ |
| 800 |
|
|
| 822 |
} |
} |
| 823 |
|
|
| 824 |
condcode = ecode[LINK_SIZE+1]; |
condcode = ecode[LINK_SIZE+1]; |
| 825 |
|
|
| 826 |
/* Now see what the actual condition is */ |
/* Now see what the actual condition is */ |
| 827 |
|
|
| 828 |
if (condcode == OP_RREF) /* Recursion test */ |
if (condcode == OP_RREF) /* Recursion test */ |
| 1113 |
else if (rrc != MATCH_NOMATCH && rrc != MATCH_THEN) |
else if (rrc != MATCH_NOMATCH && rrc != MATCH_THEN) |
| 1114 |
{ |
{ |
| 1115 |
DPRINTF(("Recursion gave error %d\n", rrc)); |
DPRINTF(("Recursion gave error %d\n", rrc)); |
| 1116 |
|
if (new_recursive.offset_save != stacksave) |
| 1117 |
|
(pcre_free)(new_recursive.offset_save); |
| 1118 |
RRETURN(rrc); |
RRETURN(rrc); |
| 1119 |
} |
} |
| 1120 |
|
|