1694 
for (;;) 
for (;;) 
1695 
{ 
{ 
1696 
register int c = *code; 
register int c = *code; 
1697 


1698 
if (c == OP_END) return NULL; 
if (c == OP_END) return NULL; 
1699 


1700 
/* XCLASS is used for classes that cannot be represented just by a bit 
/* XCLASS is used for classes that cannot be represented just by a bit 
4727 
} 
} 
4728 


4729 
/* If the maximum is unlimited, set a repeater in the final copy. For 
/* If the maximum is unlimited, set a repeater in the final copy. For 
4730 
ONCE brackets, that's all we need to do. 
ONCE brackets, that's all we need to do. 
4731 


4732 

(To be done next, after recursion adjusted) 
4733 

However, possessively repeated 
4734 

ONCE brackets can be converted into noncapturing brackets, as the 
4735 

behaviour of (?:xx)++ is the same as (?>xx)++ and this saves having to 
4736 

deal with possessive ONCEs specially. 
4737 

(....) 
4738 


4739 
Otherwise, if the quantifier was possessive, we convert the BRA code to 
Otherwise, if the quantifier was possessive, we convert the BRA code to 
4740 
the POS form, and the KET code to KETRPOS. (It turns out to be convenient 
the POS form, and the KET code to KETRPOS. (It turns out to be convenient 
4756 
uschar *ketcode = code  1  LINK_SIZE; 
uschar *ketcode = code  1  LINK_SIZE; 
4757 
uschar *bracode = ketcode  GET(ketcode, 1); 
uschar *bracode = ketcode  GET(ketcode, 1); 
4758 


4759 
if (*bracode == OP_ONCE) 
/**** 
4760 

if (*bracode == OP_ONCE && possessive_quantifier) 
4761 

*bracode = OP_BRA; 
4762 

****/ 
4763 


4764 

if (*bracode == OP_ONCE) 
4765 
*ketcode = OP_KETRMAX + repeat_type; 
*ketcode = OP_KETRMAX + repeat_type; 
4766 
else 
else 
4767 
{ 
{ 
5698 
/* Insert the recursion/subroutine item, automatically wrapped inside 
/* Insert the recursion/subroutine item, automatically wrapped inside 
5699 
"once" brackets. Set up a "previous group" length so that a 
"once" brackets. Set up a "previous group" length so that a 
5700 
subsequent quantifier will work. */ 
subsequent quantifier will work. */ 
5701 


5702 
*code = OP_ONCE; 
*code = OP_ONCE; 
5703 
PUT(code, 1, 2 + 2*LINK_SIZE); 
PUT(code, 1, 2 + 2*LINK_SIZE); 
5704 
code += 1 + LINK_SIZE; 
code += 1 + LINK_SIZE; 