Change 34654 by [EMAIL PROTECTED] on 2008/10/29 23:20:01

        Add MUTABLE_IO(), and eliminate (IO *) casts in *.c.

Affected files ...

... //depot/perl/doio.c#373 edit
... //depot/perl/gv.c#403 edit
... //depot/perl/handy.h#155 edit
... //depot/perl/perl.c#882 edit
... //depot/perl/pp.c#637 edit
... //depot/perl/pp_sys.c#566 edit
... //depot/perl/sv.c#1568 edit

Differences ...

==== //depot/perl/doio.c#373 (text) ====
Index: perl/doio.c
--- perl/doio.c#372~34653~      2008-10-29 16:04:34.000000000 -0700
+++ perl/doio.c 2008-10-29 16:20:01.000000000 -0700
@@ -1316,7 +1316,7 @@
            goto do_fstat;
        }
         else if (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVIO) {
-            io = (IO*)SvRV(sv);
+            io = MUTABLE_IO(SvRV(sv));
            gv = NULL;
             goto do_fstat_have_io;
         }

==== //depot/perl/gv.c#403 (text) ====
Index: perl/gv.c
--- perl/gv.c#402~34653~        2008-10-29 16:04:34.000000000 -0700
+++ perl/gv.c   2008-10-29 16:20:01.000000000 -0700
@@ -1499,7 +1499,7 @@
 {
     dVAR;
     GV *iogv;
-    IO * const io = (IO*)newSV_type(SVt_PVIO);
+    IO * const io = MUTABLE_IO(newSV_type(SVt_PVIO));
     /* This used to read SvREFCNT(io) = 1;
        It's not clear why the reference count needed an explicit reset. NWC
     */

==== //depot/perl/handy.h#155 (text) ====
Index: perl/handy.h
--- perl/handy.h#154~34647~     2008-10-29 14:57:34.000000000 -0700
+++ perl/handy.h        2008-10-29 16:20:01.000000000 -0700
@@ -57,6 +57,7 @@
 #define MUTABLE_AV(p)  ((AV *)MUTABLE_PTR(p))
 #define MUTABLE_CV(p)  ((CV *)MUTABLE_PTR(p))
 #define MUTABLE_HV(p)  ((HV *)MUTABLE_PTR(p))
+#define MUTABLE_IO(p)  ((IO *)MUTABLE_PTR(p))
 #define MUTABLE_SV(p)  ((SV *)MUTABLE_PTR(p))
 
 /* XXX Configure ought to have a test for a boolean type, if I can

==== //depot/perl/perl.c#882 (text) ====
Index: perl/perl.c
--- perl/perl.c#881~34653~      2008-10-29 16:04:34.000000000 -0700
+++ perl/perl.c 2008-10-29 16:20:01.000000000 -0700
@@ -4554,7 +4554,7 @@
     IoIFP(io) = PerlIO_stdin();
     tmpgv = gv_fetchpvs("stdin", GV_ADD|GV_NOTQUAL, SVt_PV);
     GvMULTI_on(tmpgv);
-    GvIOp(tmpgv) = (IO*)SvREFCNT_inc_simple(io);
+    GvIOp(tmpgv) = MUTABLE_IO(SvREFCNT_inc_simple(io));
 
     tmpgv = gv_fetchpvs("STDOUT", GV_ADD|GV_NOTQUAL, SVt_PVIO);
     GvMULTI_on(tmpgv);
@@ -4564,7 +4564,7 @@
     setdefout(tmpgv);
     tmpgv = gv_fetchpvs("stdout", GV_ADD|GV_NOTQUAL, SVt_PV);
     GvMULTI_on(tmpgv);
-    GvIOp(tmpgv) = (IO*)SvREFCNT_inc_simple(io);
+    GvIOp(tmpgv) = MUTABLE_IO(SvREFCNT_inc_simple(io));
 
     PL_stderrgv = gv_fetchpvs("STDERR", GV_ADD|GV_NOTQUAL, SVt_PVIO);
     GvMULTI_on(PL_stderrgv);
@@ -4573,7 +4573,7 @@
     IoOFP(io) = IoIFP(io) = PerlIO_stderr();
     tmpgv = gv_fetchpvs("stderr", GV_ADD|GV_NOTQUAL, SVt_PV);
     GvMULTI_on(tmpgv);
-    GvIOp(tmpgv) = (IO*)SvREFCNT_inc_simple(io);
+    GvIOp(tmpgv) = MUTABLE_IO(SvREFCNT_inc_simple(io));
 
     PL_statname = newSV(0);            /* last filename we did stat on */
 

==== //depot/perl/pp.c#637 (text) ====
Index: perl/pp.c
--- perl/pp.c#636~34653~        2008-10-29 16:04:34.000000000 -0700
+++ perl/pp.c   2008-10-29 16:20:01.000000000 -0700
@@ -139,7 +139,7 @@
        if (SvTYPE(sv) == SVt_PVIO) {
            GV * const gv = (GV*) sv_newmortal();
            gv_init(gv, 0, "", 0, 0);
-           GvIOp(gv) = (IO *)sv;
+           GvIOp(gv) = MUTABLE_IO(sv);
            SvREFCNT_inc_void_NN(sv);
            sv = (SV*) gv;
        }

==== //depot/perl/pp_sys.c#566 (text) ====
Index: perl/pp_sys.c
--- perl/pp_sys.c#565~34653~    2008-10-29 16:04:34.000000000 -0700
+++ perl/pp_sys.c       2008-10-29 16:20:01.000000000 -0700
@@ -2207,7 +2207,7 @@
                goto do_ftruncate_gv;
            }
            else if (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVIO) {
-               io = (IO*) SvRV(sv); /* *main::FRED{IO} for example */
+               io = MUTABLE_IO(SvRV(sv)); /* *main::FRED{IO} for example */
                goto do_ftruncate_io;
            }
 
@@ -2854,7 +2854,7 @@
                 goto do_fstat_warning_check;
             goto do_fstat;
         } else if (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVIO) { 
-            io = (IO*)SvRV(sv);
+            io = MUTABLE_IO(SvRV(sv));
             if (PL_op->op_type == OP_LSTAT)
                 goto do_fstat_warning_check;
             goto do_fstat_have_io; 

==== //depot/perl/sv.c#1568 (text) ====
Index: perl/sv.c
--- perl/sv.c#1567~34653~       2008-10-29 16:04:34.000000000 -0700
+++ perl/sv.c   2008-10-29 16:20:01.000000000 -0700
@@ -4736,7 +4736,7 @@
     */
 
     if (how == PERL_MAGIC_tiedscalar && SvTYPE(sv) == SVt_PVIO &&
-        obj && SvROK(obj) && GvIO(SvRV(obj)) == (IO*)sv)
+        obj && SvROK(obj) && GvIO(SvRV(obj)) == (const IO *)sv)
     {
       sv_rvweaken(obj);
     }
@@ -5494,7 +5494,7 @@
            IoIFP(sv) != PerlIO_stdout() &&
            IoIFP(sv) != PerlIO_stderr())
        {
-           io_close((IO*)sv, FALSE);
+           io_close(MUTABLE_IO(sv), FALSE);
        }
        if (IoDIRP(sv) && !(IoFLAGS(sv) & IOf_FAKE_DIRP))
            PerlDir_close(IoDIRP(sv));
@@ -7889,7 +7889,7 @@
 
     switch (SvTYPE(sv)) {
     case SVt_PVIO:
-       io = (IO*)sv;
+       io = MUTABLE_IO(sv);
        break;
     case SVt_PVGV:
        if (isGV_with_GP(sv)) {
@@ -10090,8 +10090,8 @@
 #define hv_dup_inc(s,t)        MUTABLE_HV(SvREFCNT_inc(sv_dup((const SV 
*)s,t)))
 #define cv_dup(s,t)    MUTABLE_CV(sv_dup((SV*)s,t))
 #define cv_dup_inc(s,t)        MUTABLE_CV(SvREFCNT_inc(sv_dup((const SV 
*)s,t)))
-#define io_dup(s,t)    (IO*)sv_dup((SV*)s,t)
-#define io_dup_inc(s,t)        (IO*)SvREFCNT_inc(sv_dup((const SV *)s,t))
+#define io_dup(s,t)    MUTABLE_IO(sv_dup((SV*)s,t))
+#define io_dup_inc(s,t)        MUTABLE_IO(SvREFCNT_inc(sv_dup((const SV 
*)s,t)))
 #define gv_dup(s,t)    (GV*)sv_dup((SV*)s,t)
 #define gv_dup_inc(s,t)        (GV*)SvREFCNT_inc(sv_dup((const SV *)s,t))
 #define SAVEPV(p)      ((p) ? savepv(p) : NULL)
End of Patch.

Reply via email to