Change 27677 missed two direct accesses to op_private in COPs.
Nicholas Clark [Sun, 2 Apr 2006 20:27:24 +0000 (20:27 +0000)]
I believe that all are now found, as redefining CopHINTS_get(c)
to (~(c)->op_private) (with corresponding changes to CopHINTS_set()
and the initialisation of PL_compiling) works.

p4raw-id: //depot/perl@27687

perl.h
pp_ctl.c
utf8.h

diff --git a/perl.h b/perl.h
index 1fffc52..661af3e 100644 (file)
--- a/perl.h
+++ b/perl.h
@@ -4988,7 +4988,7 @@ typedef struct am_table_short AMTS;
 #define SET_NUMERIC_LOCAL() \
        set_numeric_local();
 
-#define IN_LOCALE_RUNTIME      (PL_curcop->op_private & HINT_LOCALE)
+#define IN_LOCALE_RUNTIME      (CopHINTS_get(PL_curcop) & HINT_LOCALE)
 #define IN_LOCALE_COMPILETIME  (PL_hints & HINT_LOCALE)
 
 #define IN_LOCALE \
index 26c4ea1..cb35b59 100644 (file)
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -4090,7 +4090,7 @@ S_do_smartmatch(pTHX_ HV *seen_this, HV *seen_other)
                PUSHs(other);
                PUSHs(*svp);
                PUTBACK;
-               if ((PL_curcop->op_private & HINT_INTEGER) == HINT_INTEGER)
+               if (CopHINTS_get(PL_curcop) & HINT_INTEGER)
                    (void) pp_i_eq();
                else
                    (void) pp_eq();
@@ -4184,7 +4184,7 @@ S_do_smartmatch(pTHX_ HV *seen_this, HV *seen_other)
        /* Otherwise, numeric comparison */
        PUSHs(d); PUSHs(e);
        PUTBACK;
-       if ((PL_curcop->op_private & HINT_INTEGER) == HINT_INTEGER)
+       if (CopHINTS_get(PL_curcop) & HINT_INTEGER)
            (void) pp_i_eq();
        else
            (void) pp_eq();
diff --git a/utf8.h b/utf8.h
index 64dc393..9bf3928 100644 (file)
--- a/utf8.h
+++ b/utf8.h
@@ -188,7 +188,7 @@ encoded character.
  * SpecialCasing.txt. */
 #define UTF8_MAXBYTES_CASE     6
 
-#define IN_BYTES (PL_curcop->op_private & HINT_BYTES)
+#define IN_BYTES (CopHINTS_get(PL_curcop) & HINT_BYTES)
 #define DO_UTF8(sv) (SvUTF8(sv) && !IN_BYTES)
 
 #define UTF8_ALLOW_EMPTY               0x0001