slurping an empty file should return '' rather than undef, with
[p5sagit/p5-mst-13.2.git] / regcomp.h
index fef317a..1538f8a 100644 (file)
--- a/regcomp.h
+++ b/regcomp.h
@@ -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))