cvs commit: ponie/perl sv.c

[email protected] (Nicholas Clark) 11 Apr 2005 14:41:49 -0000
Newsgroups perl.ponie.changes
Message-ID <[email protected]>
cvsuser     05/04/11 07:41:49

  Modified:    perl     sv.c
  Log:
  Due to the rearranging of the sv_head/sv_body, sv_replace needs some tweaking.
  
  Revision  Changes    Path
  1.59      +7 -0      ponie/perl/sv.c
  
  Index: sv.c
  ===================================================================
  RCS file: /cvs/public/ponie/perl/sv.c,v
  retrieving revision 1.58
  retrieving revision 1.59
  diff -u -r1.58 -r1.59
  --- sv.c	10 Apr 2005 04:17:49 -0000	1.58
  +++ sv.c	11 Apr 2005 14:41:48 -0000	1.59
  @@ -5979,6 +5979,8 @@
   Perl_sv_replace(pTHX_ register SV *sv, register SV *nsv)
   {
       U32 refcnt = SvREFCNT(sv);
  +    int type = SvTYPE(nsv);
  +
       SV_CHECK_THINKFIRST_COW_DROP(sv);
       if (SvREFCNT(nsv) != 1 && ckWARN_d(WARN_INTERNAL))
   	Perl_warner(aTHX_ packWARN(WARN_INTERNAL), "Reference miscount in sv_replace()");
  @@ -5998,6 +6000,11 @@
       SvREFCNT(sv) = SvREFCNT(nsv);
       SvFLAGS(sv) = SvFLAGS(nsv);
       SvANY(sv) = SvANY(nsv);
  +    /* Because the SV data structure is rearranged */
  +    if (type == SVt_IV || type >= SVt_PVIV)
  +       SvIV_set(sv, SvIVX(nsv));
  +    if (type == SVt_NV || type >= SVt_PVNV)
  +       SvNV_set(sv, SvNVX(nsv));
   
   #ifdef PERL_COPY_ON_WRITE
       if (SvIsCOW_normal(nsv)) {