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.