X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=regcomp.h;h=1538f8ab58641dba58ebc5c7fa0387c59fbaa7cb;hb=00fdd80d96a7c61ee9d4b02db269b54430a119de;hp=38b15acc69e42709bd90b565e0eaaea92d337608;hpb=a0ed51b321531af4b47cce24205ab9656f043f0f;p=p5sagit%2Fp5-mst-13.2.git diff --git a/regcomp.h b/regcomp.h index 38b15ac..1538f8a 100644 --- a/regcomp.h +++ b/regcomp.h @@ -150,7 +150,7 @@ struct regnode_2 { #define FILL_ADVANCE_NODE_ARG(ptr, op, arg) STMT_START { \ ARG_SET(ptr, arg); FILL_ADVANCE_NODE(ptr, op); (ptr) += 1; } STMT_END -#define MAGIC 0234 +#define REG_MAGIC 0234 #define SIZE_ONLY (PL_regcode == &PL_regdummy) @@ -186,8 +186,19 @@ struct regnode_2 { #define UCHARAT(p) PL_regdummy #endif /* lint */ -#define FAIL(m) croak ("/%.127s/: %s", PL_regprecomp,m) -#define FAIL2(pat,m) re_croak2("/%.127s/: ",pat,PL_regprecomp,m) +#define FAIL(m) \ + STMT_START { \ + if (!SIZE_ONLY) \ + SAVEDESTRUCTOR(clear_re,(void*)PL_regcomp_rx); \ + croak ("/%.127s/: %s", PL_regprecomp,m); \ + } STMT_END + +#define FAIL2(pat,m) \ + STMT_START { \ + if (!SIZE_ONLY) \ + SAVEDESTRUCTOR(clear_re,(void*)PL_regcomp_rx); \ + re_croak2("/%.127s/: ",pat,PL_regprecomp,m); \ + } STMT_END #define EXTRA_SIZE(guy) ((sizeof(guy)-1)/sizeof(struct regnode)) @@ -200,9 +211,9 @@ struct regnode_2 { /* The following have no fixed length. char* since we do strchr on it. */ #ifndef DOINIT -EXTCONST char varies[]; +EXTCONST char PL_varies[]; #else -EXTCONST char varies[] = { +EXTCONST char PL_varies[] = { BRANCH, BACK, STAR, PLUS, CURLY, CURLYX, REF, REFF, REFFL, WHILEM, CURLYM, CURLYN, BRANCHJ, IFTHEN, SUSPEND, CLUMP, 0 }; @@ -211,10 +222,10 @@ EXTCONST char varies[] = { /* The following always have a length of 1. char* since we do strchr on it. */ /* (Note that lenght 1 means "one character" under UTF8, not "one octet".) */ #ifndef DOINIT -EXTCONST char simple[]; +EXTCONST char PL_simple[]; #else -EXTCONST char simple[] = { - ANY, ANYUTF8, SANY, SANYUTF8, ANYOF, ANYOFUTF8, +EXTCONST char PL_simple[] = { + REG_ANY, ANYUTF8, SANY, SANYUTF8, ANYOF, ANYOFUTF8, ALNUM, ALNUMUTF8, ALNUML, ALNUMLUTF8, NALNUM, NALNUMUTF8, NALNUML, NALNUMLUTF8, SPACE, SPACEUTF8, SPACEL, SPACELUTF8,