561 |
uschar occhars[8]; |
uschar occhars[8]; |
562 |
#endif |
#endif |
563 |
|
|
564 |
|
int codelink; |
565 |
|
int condcode; |
566 |
int ctype; |
int ctype; |
567 |
int length; |
int length; |
568 |
int max; |
int max; |
789 |
|
|
790 |
case OP_COND: |
case OP_COND: |
791 |
case OP_SCOND: |
case OP_SCOND: |
792 |
|
codelink= GET(ecode, 1); |
793 |
|
|
794 |
/* 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 |
795 |
inserted between OP_COND and an assertion condition. */ |
inserted between OP_COND and an assertion condition. */ |
796 |
|
|
817 |
ecode += _pcre_OP_lengths[OP_CALLOUT]; |
ecode += _pcre_OP_lengths[OP_CALLOUT]; |
818 |
} |
} |
819 |
|
|
820 |
|
condcode = ecode[LINK_SIZE+1]; |
821 |
|
|
822 |
/* Now see what the actual condition is */ |
/* Now see what the actual condition is */ |
823 |
|
|
824 |
if (ecode[LINK_SIZE+1] == OP_RREF) /* Recursion test */ |
if (condcode == OP_RREF) /* Recursion test */ |
825 |
{ |
{ |
826 |
offset = GET2(ecode, LINK_SIZE + 2); /* Recursion group number*/ |
offset = GET2(ecode, LINK_SIZE + 2); /* Recursion group number*/ |
827 |
condition = md->recursive != NULL && |
condition = md->recursive != NULL && |
829 |
ecode += condition? 3 : GET(ecode, 1); |
ecode += condition? 3 : GET(ecode, 1); |
830 |
} |
} |
831 |
|
|
832 |
else if (ecode[LINK_SIZE+1] == OP_CREF) /* Group used test */ |
else if (condcode == OP_CREF) /* Group used test */ |
833 |
{ |
{ |
834 |
offset = GET2(ecode, LINK_SIZE+2) << 1; /* Doubled ref number */ |
offset = GET2(ecode, LINK_SIZE+2) << 1; /* Doubled ref number */ |
835 |
condition = offset < offset_top && md->offset_vector[offset] >= 0; |
condition = offset < offset_top && md->offset_vector[offset] >= 0; |
836 |
ecode += condition? 3 : GET(ecode, 1); |
ecode += condition? 3 : GET(ecode, 1); |
837 |
} |
} |
838 |
|
|
839 |
else if (ecode[LINK_SIZE+1] == OP_DEF) /* DEFINE - always false */ |
else if (condcode == OP_DEF) /* DEFINE - always false */ |
840 |
{ |
{ |
841 |
condition = FALSE; |
condition = FALSE; |
842 |
ecode += GET(ecode, 1); |
ecode += GET(ecode, 1); |
863 |
else |
else |
864 |
{ |
{ |
865 |
condition = FALSE; |
condition = FALSE; |
866 |
ecode += GET(ecode, 1); |
ecode += codelink; |
867 |
} |
} |
868 |
} |
} |
869 |
|
|