This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Put back the cygwin32 Configure fix of 3582 undone by 3597.
[perl5.git] / regcomp.h
index 38b15ac..7c5c13a 100644 (file)
--- 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(S_clear_re,(void*)PL_regcomp_rx);            \
+       Perl_croak(aTHX_ "/%.127s/: %s",  PL_regprecomp,m);             \
+    } STMT_END
+
+#define        FAIL2(pat,m) \
+    STMT_START {                                                       \
+       if (!SIZE_ONLY)                                                 \
+           SAVEDESTRUCTOR(S_clear_re,(void*)PL_regcomp_rx);            \
+       S_re_croak2(aTHX_ "/%.127s/: ",pat,PL_regprecomp,m);            \
+    } STMT_END
 
 #define EXTRA_SIZE(guy) ((sizeof(guy)-1)/sizeof(struct regnode))
 
@@ -196,13 +207,15 @@ struct regnode_2 {
 #define REG_SEEN_GPOS          4
 #define REG_SEEN_EVAL          8
 
+START_EXTERN_C
+
 #include "regnodes.h"
 
 /* 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 +224,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,
@@ -223,3 +236,4 @@ EXTCONST char simple[] = {
 };
 #endif
 
+END_EXTERN_C