This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
op_reg_common.h: Refactor variable for safety
authorKarl Williamson <public@khwilliamson.com>
Sat, 31 Jul 2010 20:13:40 +0000 (14:13 -0600)
committerRafael Garcia-Suarez <rgs@consttype.org>
Wed, 11 Aug 2010 08:23:35 +0000 (10:23 +0200)
This patch changes the variable that tells how many common bits there
are to instead be +1 that value, so bits won't get reused.  A later
commit will renumber the bits in op.h and regexp.h, but for now things
are left as-is there, which means the base variables in those two files
must subtract one to compensate for the +1

op.h
op_reg_common.h
regexp.h

diff --git a/op.h b/op.h
index f402d76..d00f74f 100644 (file)
--- a/op.h
+++ b/op.h
@@ -360,7 +360,7 @@ struct pmop {
 #define PM_SETRE(o,r)   ((o)->op_pmregexp = (r))
 #endif
 
-#define PMf_BASE_SHIFT _RXf_PMf_SHIFT
+#define PMf_BASE_SHIFT ((_RXf_PMf_SHIFT_NEXT)-1)
 
 /* taint $1 etc. if target tainted */
 #define PMf_RETAINT    (1<<(PMf_BASE_SHIFT+1))
index b0fd273..de100dc 100644 (file)
@@ -24,4 +24,6 @@
 #define RXf_PMf_LOCALE         (1 << 5)
 #define PMf_LOCALE             (1 << 5)
 
-#define _RXf_PMf_SHIFT 5    /* Begins with '_' so won't be exported by B */
+/* Next available bit after the above.  Name begins with '_' so won't be
+ * exported by B */
+#define _RXf_PMf_SHIFT_NEXT 6
index ec89788..5246c12 100644 (file)
--- a/regexp.h
+++ b/regexp.h
@@ -291,7 +291,7 @@ and check for NULL.
  *
  */
 
-#define RXf_BASE_SHIFT _RXf_PMf_SHIFT
+#define RXf_BASE_SHIFT ((_RXf_PMf_SHIFT_NEXT)-1)
 
 /* Anchor and GPOS related stuff */
 #define RXf_ANCH_BOL           (1<<(RXf_BASE_SHIFT+3))