1 /* This testcase would cause a hang in PTA solving due to a complex copy
2 constraint and marking the wrong variable as changed. */
4 typedef struct RExC_state_t
12 unsigned char str_len;
16 static void *regatom (RExC_state_t * pRExC_state, int *flagp);
19 regpiece (RExC_state_t * pRExC_state, int *flagp)
21 return regatom (0, 0);
25 regbranch (RExC_state_t * pRExC_state, int *flagp, int first)
27 return regpiece (0, 0);
31 reg (RExC_state_t * pRExC_state, int paren, int *flagp)
33 return regbranch (0, 0, 1);
37 Perl_pregcomp (char *exp, char *xend, void *pm)
43 regatom (RExC_state_t * pRExC_state, int *flagp)
45 register void *ret = 0;
49 switch (*(pRExC_state->parse))
52 ret = reg (pRExC_state, 1, &flags);
60 register unsigned long len;
61 register unsigned ender;
65 unsigned long foldlen;
66 unsigned char tmpbuf[6 + 1], *foldbuf;
69 s = (((struct regnode_string *) ret)->string);
70 for (len = 0, p = (pRExC_state->parse) - 1;
71 len < 127 && p < (pRExC_state->end); len++)
73 if (((*p) == '*' || (*p) == '+' || (*p) == '?'
74 || ((*p) == '{' && regcurly (p))))
77 for (foldbuf = tmpbuf; foldlen; foldlen -= numlen)
79 reguni (pRExC_state, ender, s, &unilen);
86 reguni (pRExC_state, ender, s, &unilen);