cvs commit: ponie/perl pp_hot.c sv.c sv.h

[email protected] (Nicholas Clark) 19 Apr 2005 21:23:13 -0000
Newsgroups perl.ponie.changes
Message-ID <[email protected]>
cvsuser     05/04/19 14:23:13

  Modified:    perl     pp_hot.c sv.c sv.h
  Log:
  Force RVALUE macros, to ensure _set variants are used
  
  Revision  Changes    Path
  1.13      +0 -1      ponie/perl/pp_hot.c
  
  Index: pp_hot.c
  ===================================================================
  RCS file: /cvs/public/ponie/perl/pp_hot.c,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- pp_hot.c	19 Apr 2005 19:04:13 -0000	1.12
  +++ pp_hot.c	19 Apr 2005 21:23:13 -0000	1.13
  @@ -2951,7 +2951,6 @@
   	    SvPV_set(sv, 0);
               SvLEN_set(sv, 0);
   	    SvCUR_set(sv, 0);
  -	    SvLEN(sv) = SvCUR(sv) = 0;
   	}
   	switch (to_what) {
   	case OPpDEREF_SV:
  
  
  
  1.62      +8 -8      ponie/perl/sv.c
  
  Index: sv.c
  ===================================================================
  RCS file: /cvs/public/ponie/perl/sv.c,v
  retrieving revision 1.61
  retrieving revision 1.62
  diff -u -r1.61 -r1.62
  --- sv.c	19 Apr 2005 19:04:13 -0000	1.61
  +++ sv.c	19 Apr 2005 21:23:13 -0000	1.62
  @@ -8914,17 +8914,17 @@
       SvPV_set(sv, SvPVX(new_mg));
       SvPV_set(new_mg, temp_pv);
       temp_len = SvCUR(sv);
  -    SvCUR(sv) = SvCUR(new_mg);
  -    SvCUR(new_mg) = temp_len;
  +    SvCUR_set(sv, SvCUR(new_mg));
  +    SvCUR_set(new_mg, temp_len);
       temp_len = SvLEN(sv);
  -    SvLEN(sv) = SvLEN(new_mg);
  -    SvLEN(new_mg) = temp_len;
  +    SvLEN_set(sv, SvLEN(new_mg));
  +    SvLEN_set(new_mg, temp_len);
       temp_magic = SvMAGIC(sv);
  -    SvMAGIC(sv) = SvMAGIC(new_mg);
  -    SvMAGIC(new_mg) = temp_magic;
  +    SvMAGIC_set(sv, SvMAGIC(new_mg));
  +    SvMAGIC_set(new_mg, temp_magic);
       temp_stash = SvSTASH(sv);
  -    SvSTASH(sv) = SvSTASH(new_mg);
  -    SvSTASH(new_mg) = temp_stash;
  +    SvSTASH_set(sv, SvSTASH(new_mg));
  +    SvSTASH_set(new_mg, temp_stash);
   
       temp = SvFLAGS(sv);
       SvFLAGS(sv) = (SvFLAGS(sv) & SVTYPEMASK) | (SvFLAGS(new_mg) & ~SVTYPEMASK);
  
  
  
  1.66      +18 -10    ponie/perl/sv.h
  
  Index: sv.h
  ===================================================================
  RCS file: /cvs/public/ponie/perl/sv.h,v
  retrieving revision 1.65
  retrieving revision 1.66
  diff -u -r1.65 -r1.66
  --- sv.h	19 Apr 2005 19:04:13 -0000	1.65
  +++ sv.h	19 Apr 2005 21:23:13 -0000	1.66
  @@ -863,32 +863,40 @@
   
   
   #ifdef PERL_CORE
  -#define SvRV(sv) (0 + * Perl_macro_SvRV(aTHX_ (SV*) (sv)))
  +#define SvRV(sv)  (0 + * Perl_macro_SvRV(aTHX_ (SV*) (sv)))
   #define SvIVX(sv) (0 + * Perl_macro_SvIVX(aTHX_ (SV*) (sv)))
   #define SvUVX(sv) (0 + * Perl_macro_SvUVX(aTHX_ (SV*) (sv)))
   #define SvNVX(sv) (0.0 + * Perl_macro_SvNVX(aTHX_ (SV*) (sv)))
   #define SvPVX(sv) (0 + * Perl_macro_SvPVX(aTHX_ (SV*) (sv)))
  +#define SvCUR(sv) (0 + * Perl_macro_SvCUR(aTHX_ (SV*) (sv)))
  +#define SvLEN(sv) (0 + * Perl_macro_SvLEN(aTHX_ (SV*) (sv)))
  +#ifdef PERL_IN_SV_C
  +/* Until Perl_sv_unmagic is migrated inside the PMC.  */
  +#define SvMAGIC(sv) (* Perl_macro_SvMAGIC(aTHX_ (SV*) (sv)))
   #else
  -#define SvRV(sv) (* Perl_macro_SvRV(aTHX_ (SV*) (sv)))
  +#define SvMAGIC(sv) (0 + * Perl_macro_SvMAGIC(aTHX_ (SV*) (sv)))
  +#endif
  +#define SvSTASH(sv) (0 + * Perl_macro_SvSTASH(aTHX_ (SV*) (sv)))
  +#else
  +#define SvRV(sv)  (* Perl_macro_SvRV(aTHX_ (SV*) (sv)))
   #define SvIVX(sv) (* Perl_macro_SvIVX(aTHX_ (SV*) (sv)))
   #define SvUVX(sv) (* Perl_macro_SvUVX(aTHX_ (SV*) (sv)))
   #define SvNVX(sv) (* Perl_macro_SvNVX(aTHX_ (SV*) (sv)))
   #define SvPVX(sv) (* Perl_macro_SvPVX(aTHX_ (SV*) (sv)))
  +#define SvCUR(sv) (* Perl_macro_SvCUR(aTHX_ (SV*) (sv)))
  +#define SvLEN(sv) (* Perl_macro_SvLEN(aTHX_ (SV*) (sv)))
  +#define SvMAGIC(sv) (* Perl_macro_SvMAGIC(aTHX_ (SV*) (sv)))
  +#define SvSTASH(sv) (* Perl_macro_SvSTASH(aTHX_ (SV*) (sv)))
   #endif
   
   #define SvRVx(sv) SvRV(sv)
   #define SvIVXx(sv) SvIVX(sv)
   #define SvUVXx(sv) SvUVX(sv)
   #define SvNVXx(sv) SvNVX(sv)
  -
   #define SvPVXx(sv) SvPVX(sv)
  -#define SvCUR(sv) ( * Perl_macro_SvCUR(aTHX_ (SV*) (sv)))
  -#define SvLEN(sv) ( * Perl_macro_SvLEN(aTHX_ (SV*) (sv)))
   #define SvLENx(sv) SvLEN(sv)
   #define SvEND(sv)(SvPVX(sv) + SvCUR(sv))
   #define SvENDx(sv) ((PL_Sv = (sv)), SvEND(PL_Sv))
  -#define SvMAGIC(sv)	(* Perl_macro_SvMAGIC(aTHX_ (SV*) (sv)))
  -#define SvSTASH(sv)	(* Perl_macro_SvSTASH(aTHX_ (SV*) (sv)))
   
   /* Ask a scalar nicely to try to become an IV, if possible.
      Not guaranteed to stay returning void */
  @@ -919,13 +927,13 @@
                   (* Perl_macro_SvSTASH(aTHX_ (SV*) (sv)) = (val)); } STMT_END
   #define SvCUR_set(sv, val) \
   	STMT_START { assert(SvTYPE(sv) >= SVt_PV); \
  -		(SvCUR(sv) = (val)); } STMT_END
  +		(* Perl_macro_SvCUR(aTHX_ (SV*) (sv)) = (val)); } STMT_END
   #define SvLEN_set(sv, val) \
   	STMT_START { assert(SvTYPE(sv) >= SVt_PV); \
  -		(SvLEN(sv) = (val)); } STMT_END
  +		(* Perl_macro_SvLEN(aTHX_ (SV*) (sv)) = (val)); } STMT_END
   #define SvEND_set(sv, val) \
   	STMT_START { assert(SvTYPE(sv) >= SVt_PV); \
  -		(SvCUR(sv) = (val) - SvPVX(sv)); } STMT_END
  +		(* Perl_macro_SvCUR(aTHX_ (SV*) (sv)) = (val) - SvPVX(sv)); } STMT_END
   
   #define SvPV_renew(sv,n) \
   	STMT_START { SvLEN_set(sv, n); \