You are viewing a plain text version of this content. The canonical link for it is here.
Posted to embperl-cvs@perl.apache.org by ri...@apache.org on 2001/11/13 08:35:18 UTC

cvs commit: embperl ep.h epcmd.c epcomp.c epdbg.c epdom.c epeval.c epmain.c epparse.c eputil.c

richter     01/11/12 23:35:18

  Modified:    .        Tag: Embperl2c ep.h epcmd.c epcomp.c epdbg.c
                        epdom.c epeval.c epmain.c epparse.c eputil.c
  Log:
  Embperl 2 - memory debugging
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.27.4.28 +52 -0     embperl/ep.h
  
  Index: ep.h
  ===================================================================
  RCS file: /home/cvs/embperl/ep.h,v
  retrieving revision 1.27.4.27
  retrieving revision 1.27.4.28
  diff -u -r1.27.4.27 -r1.27.4.28
  --- ep.h	2001/11/12 07:32:22	1.27.4.27
  +++ ep.h	2001/11/13 07:35:16	1.27.4.28
  @@ -646,3 +646,55 @@
   #include "ep2.h"
   #endif
   
  +/* memory debugging stuff */
  +
  +#ifdef DMALLOC
  +
  +
  +SV * AddDMallocMagic (/*in*/ SV *	pSV,
  +		      /*in*/ char *     sText,
  +		      /*in*/ char *     sFile,
  +		      /*in*/ int        nLine) ;
  +
  +SV * RemoveDMallocMagic (/*in*/ SV *	pSV,
  +		      /*in*/ char *     sFile,
  +		      /*in*/ int        nLine) ;
  +
  +#undef SvREFCNT_dec
  +#define SvREFCNT_dec(sv) sv_free(RemoveDMallocMagic((SV*)(sv), __FILE__, __LINE__))
  +
  +#undef newSV
  +#define newSV(len) AddDMallocMagic(Perl_newSV((len)), "newSV", __FILE__, __LINE__) 
  +
  +#undef newSViv
  +#define newSViv(i) AddDMallocMagic(Perl_newSViv((i)), "newSViv", __FILE__, __LINE__) 
  +
  +#undef newSVnv
  +#define newSVnv(n) AddDMallocMagic(Perl_newSVnv((n)), "newSVnv", __FILE__, __LINE__) 
  +
  +#undef newSVpv
  +#define newSVpv(s,len) AddDMallocMagic(Perl_newSVpv((s),(len)), "newSVpv", __FILE__, __LINE__) 
  +
  +#undef newSVpvn
  +#define newSVpvn(s,len) AddDMallocMagic(Perl_newSVpvn((s),(len)), "newSVpvn", __FILE__, __LINE__) 
  +
  +#undef newSVrv
  +#define newSVrv(rv,c) AddDMallocMagic(Perl_newSVrv((rv),(c)), "newSVrv", __FILE__, __LINE__) 
  +
  +#undef newSVsv
  +#define newSVsv(sv) AddDMallocMagic(Perl_newSVsv((sv)), "newSVsv", __FILE__, __LINE__) 
  +
  +#undef newSVpvf2
  +#define newSVpvf2(sv) AddDMallocMagic((sv), "newSVsvf", __FILE__, __LINE__) 
  +
  +#undef newHV
  +#define newHV() (HV *)AddDMallocMagic((SV *)Perl_newHV(), "newHV", __FILE__, __LINE__) 
  +
  +#undef newAV
  +#define newAV() (AV *)AddDMallocMagic((SV *)Perl_newAV(), "newAV", __FILE__, __LINE__) 
  +
  +#else
  +
  +#define newSVpvf2(sv)
  +
  +#endif
  
  
  
  1.37.4.7  +2 -1      embperl/epcmd.c
  
  Index: epcmd.c
  ===================================================================
  RCS file: /home/cvs/embperl/epcmd.c,v
  retrieving revision 1.37.4.6
  retrieving revision 1.37.4.7
  diff -u -r1.37.4.6 -r1.37.4.7
  --- epcmd.c	2001/09/13 07:29:43	1.37.4.6
  +++ epcmd.c	2001/11/13 07:35:16	1.37.4.7
  @@ -10,7 +10,7 @@
   #   IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
   #   WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
   #
  -#   $Id: epcmd.c,v 1.37.4.6 2001/09/13 07:29:43 richter Exp $
  +#   $Id: epcmd.c,v 1.37.4.7 2001/11/13 07:35:16 richter Exp $
   #
   ###################################################################################*/
   
  @@ -886,6 +886,7 @@
       pSV = newSVpvf("package %s ; \n#line %d %s\n use vars qw(%s); map { $%s::CLEANUP{substr ($_, 1)} = 1 } qw(%s) ;\n",
   	           r -> Buf.sEvalPackage, r -> Buf.nSourceline, r -> Buf.pFile -> sSourcefile, sArg,
   		   r -> Buf.sEvalPackage, sArg) ;
  +    newSVpvf2(pSV) ;
   
       rc = EvalDirect (r, pSV, 0, NULL) ;
       SvREFCNT_dec(pSV);
  
  
  
  1.4.2.75  +22 -1     embperl/Attic/epcomp.c
  
  Index: epcomp.c
  ===================================================================
  RCS file: /home/cvs/embperl/Attic/epcomp.c,v
  retrieving revision 1.4.2.74
  retrieving revision 1.4.2.75
  diff -u -r1.4.2.74 -r1.4.2.75
  --- epcomp.c	2001/11/12 14:43:18	1.4.2.74
  +++ epcomp.c	2001/11/13 07:35:16	1.4.2.75
  @@ -9,7 +9,7 @@
   #   IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
   #   WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
   #
  -#   $Id: epcomp.c,v 1.4.2.74 2001/11/12 14:43:18 richter Exp $
  +#   $Id: epcomp.c,v 1.4.2.75 2001/11/13 07:35:16 richter Exp $
   #
   ###################################################################################*/
   
  @@ -982,6 +982,7 @@
   		
   		pSV = newSVpvf("package %s ;\n#line %d \"%s\"\n%*.*s",
   			r -> Buf.sEvalPackage, pNode ->	nLinenumber, sSourcefile, l,l, pCTCode) ;
  +		newSVpvf2(pSV) ;
   		args[0] = r -> pReqSV ;
   		if (pCode)
   		    {			
  @@ -1215,6 +1216,7 @@
   		
   		pSV = newSVpvf("package %s ;\n#line %d \"%s\"\n%*.*s",
   			r -> Buf.sEvalPackage, pNode ->	nLinenumber, sSourcefile, l,l, pCTCode) ;
  +		newSVpvf2(pSV) ;
   		args[0] = r -> pReqSV ;
   		if (pCode)
   		    {			
  @@ -1603,6 +1605,7 @@
   
       /* pSV = newSVpvf("package %s ; \nmy ($_ep_req, $_ep_DomTree) = @_;\n%*.*s", r -> Buf.sEvalPackage, l,l, r -> pProgDef) ; */
       pSV = newSVpvf("package %s ; \n%*.*s", r -> Buf.sEvalPackage, l,l, r -> pProgDef) ;
  +    newSVpvf2(pSV) ;
       args[0] = r -> pReqSV ;
       args[1] = pDomTree -> pDomTreeSV ;
       if ((rc = EvalDirect (r, pSV, 0, args)) != ok)
  @@ -1733,6 +1736,7 @@
   	    SV * args[2] ;
   	    STRLEN l ;
   	    SV * sDomTreeSV = newSVpvf ("%s::%s", r -> Buf.sEvalPackage, "_ep_DomTree") ;
  +	    newSVpvf2(sDomTreeSV) ;
   	    SV * pDomTreeSV = perl_get_sv (SvPV (sDomTreeSV, l), TRUE) ;
   	    IV xOldDomTree = 0 ;
   	    
  @@ -1748,6 +1752,7 @@
   	    if (sSubName)
   		{
   		SV * pSVName = newSVpvf ("%s::_ep_sub_%s", r -> Buf.sEvalPackage, sSubName) ;
  +		newSVpvf2(pSVName) ;
                   pCurrDomTree -> xDocument = 0 ; /* set by first checkpoint */
   		rc = CallStoredCV (r, r -> pProgRun, (CV *)pSVName, 1, args, 0, &pSV) ;
   		if (pSVName)
  @@ -1808,6 +1813,7 @@
       SV *        pSVVar ;
       
       pSV = newSVpvf("%s::EXPIRES", r -> Buf.sEvalPackage) ;
  +    newSVpvf2(pSV) ;
       pCV = perl_get_cv (SvPV(pSV, l), 0) ;
       if (pCV)
   	{
  @@ -1818,6 +1824,7 @@
       SvREFCNT_dec(pSV);
       
       pSV = newSVpvf("%s::EXPIRES", r -> Buf.sEvalPackage) ;
  +    newSVpvf2(pSV) ;
       pSVVar = perl_get_sv (SvPV(pSV, l), 0) ;
       if (pSVVar)
   	{
  @@ -1827,6 +1834,7 @@
       
       /*
       pSV = newSVpvf("%s::CACHE_KEY", r -> Buf.sEvalPackage) ;
  +    newSVpvf2(pSV) ;
       pCV = perl_get_cv (SvPV(pSV, l), 0) ;
       if (pCV)
   	{
  @@ -1837,6 +1845,7 @@
       SvREFCNT_dec(pSV);
       
       pSV = newSVpvf("%s::CACHE_KEY", r -> Buf.sEvalPackage) ;
  +    newSVpvf2(pSV) ;
       pSVVar = perl_get_sv (SvPV(pSV, l), 0) ;
       if (pSVVar)
   	{
  @@ -1845,6 +1854,7 @@
       SvREFCNT_dec(pSV);
   
       pSV = newSVpvf("%s::CACHE_KEY_OPTIONS", r -> Buf.sEvalPackage) ;
  +    newSVpvf2(pSV) ;
       pSVVar = perl_get_sv (SvPV(pSV, l), 0) ;
       if (pSVVar)
   	{
  @@ -1880,6 +1890,7 @@
       SV *        pSVVar ;
       
       pSV = newSVpvf("%s::EXPIRES", r -> Buf.sEvalPackage) ;
  +    newSVpvf2(pSV) ;
       pCV = perl_get_cv (SvPV(pSV, l), 0) ;
       if (pCV)
   	{
  @@ -1890,6 +1901,7 @@
       SvREFCNT_dec(pSV);
       
       pSV = newSVpvf("%s::EXPIRES", r -> Buf.sEvalPackage) ;
  +    newSVpvf2(pSV) ;
       pSVVar = perl_get_sv (SvPV(pSV, l), 0) ;
       if (pSVVar)
   	{
  @@ -1898,6 +1910,7 @@
       SvREFCNT_dec(pSV);
       
       pSV = newSVpvf("%s::CACHE_KEY", r -> Buf.sEvalPackage) ;
  +    newSVpvf2(pSV) ;
       pCV = perl_get_cv (SvPV(pSV, l), 0) ;
       if (pCV)
   	{
  @@ -1908,6 +1921,7 @@
       SvREFCNT_dec(pSV);
       
       pSV = newSVpvf("%s::CACHE_KEY", r -> Buf.sEvalPackage) ;
  +    newSVpvf2(pSV) ;
       pSVVar = perl_get_sv (SvPV(pSV, l), 0) ;
       if (pSVVar)
   	{
  @@ -1916,6 +1930,7 @@
       SvREFCNT_dec(pSV);
   
       pSV = newSVpvf("%s::CACHE_KEY_OPTIONS", r -> Buf.sEvalPackage) ;
  +    newSVpvf2(pSV) ;
       pSVVar = perl_get_sv (SvPV(pSV, l), 0) ;
       if (pSVVar)
   	{
  @@ -1985,6 +2000,7 @@
   	{
           /*
           *ppSV = newSVpvf ("%s\t%s", r -> errdat1, r -> errdat2) ;
  +	newSVpvf2(*ppSV) ;
   	SvUPGRADE (*ppSV, SVt_PVIV) ;
   	SvIVX (*ppSV) = rc ;
   	if (r -> xCurrDomTree)
  @@ -2015,6 +2031,7 @@
   
       /* pSV = newSVpvf("package %s ; \nmy ($_ep_req, $_ep_DomTree) = @_;\n%*.*s", r -> Buf.sEvalPackage, l,l, r -> pProgDef) ; */
       pSV = newSVpvf("package %s ; \n%*.*s", r -> Buf.sEvalPackage, l,l, r -> pProgDef) ;
  +    newSVpvf2(pSV) ;
       args[0] = r -> pReqSV ;
       args[1] = pDomTree -> pDomTreeSV ;
       if ((rc = EvalDirect (r, pSV, 0, args)) != ok)
  @@ -2315,6 +2332,7 @@
   	    SV * args[2] ;
   	    STRLEN l ;
   	    SV * sDomTreeSV = newSVpvf ("%s::%s", r -> Buf.sEvalPackage, "_ep_DomTree") ;
  +	    newSVpvf2(sDomTreeSV) ;
   	    SV * pDomTreeSV = perl_get_sv (SvPV (sDomTreeSV, l), TRUE) ;
   	    IV xOldDomTree = 0 ;
   	    
  @@ -2330,6 +2348,7 @@
   	    if (sSubName)
   		{
   		SV * pSVName = newSVpvf ("%s::_ep_sub_%s", r -> Buf.sEvalPackage, sSubName) ;
  +		newSVpvf2(pSVName) ;
                   pCurrDomTree -> xDocument = 0 ; /* set by first checkpoint */
   		rc = CallStoredCV (r, r -> pProgRun, (CV *)pSVName, 1, args, 0, &pSV) ;
   		if (pSVName)
  @@ -2458,6 +2477,7 @@
   
     
       pSVKey = newSVpvf("%c-%d-%s-%s-%s-%s", cType, pProcessor -> nProcessorNo, pProcessor -> sCacheKey, pCVKey, pPathInfoKey, pQueryInfoKey) ;
  +    newSVpvf2(pSVKey) ;
       sKey = SvPV (pSVKey, nKey);
       if (r -> bDebug & dbgCache)
           lprintf (r, "[%d]CACHE: File: '%s'  Processor: '%s'  Step: '%s' gives Key: '%s'\n", r -> nPid, r -> Buf.pFile -> sSourcefile, pProcessor -> sName,  sStepName, sKey) ; 
  @@ -2588,6 +2608,7 @@
   		if (!r -> bError)
                       {
                       *ppSV = newSVpvf ("%s\t%s", r -> errdat1, r -> errdat2) ;
  +		    newSVpvf2(*ppSV) ;
   		    SvUPGRADE (*ppSV, SVt_PVIV) ;
                       SvIVX (*ppSV) = rc ;
   /* ###     lprintf (r, "[%d]temp: SvTYPE (*ppSV) = %d\n", r -> nPid, SvTYPE (*ppSV)) ; */
  
  
  
  1.3.6.2   +2 -1      embperl/epdbg.c
  
  Index: epdbg.c
  ===================================================================
  RCS file: /home/cvs/embperl/epdbg.c,v
  retrieving revision 1.3.6.1
  retrieving revision 1.3.6.2
  diff -u -r1.3.6.1 -r1.3.6.2
  --- epdbg.c	2001/03/27 11:52:06	1.3.6.1
  +++ epdbg.c	2001/11/13 07:35:17	1.3.6.2
  @@ -10,7 +10,7 @@
   #   IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
   #   WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
   #
  -#   $Id: epdbg.c,v 1.3.6.1 2001/03/27 11:52:06 richter Exp $
  +#   $Id: epdbg.c,v 1.3.6.2 2001/11/13 07:35:17 richter Exp $
   #
   ###################################################################################*/
   
  @@ -35,6 +35,7 @@
       /*HV * pDebugHash ;*/
       AV * pDebugArray ;
       SV * sDebugNameSV = newSVpvf (sDebugGlobName, r -> Buf.pFile -> sSourcefile) ;
  +    newSVpvf2(sDebugNameSV) ;
       char * p ;
       char * end ;
       int	 i ;
  
  
  
  1.4.2.73  +2 -2      embperl/Attic/epdom.c
  
  Index: epdom.c
  ===================================================================
  RCS file: /home/cvs/embperl/Attic/epdom.c,v
  retrieving revision 1.4.2.72
  retrieving revision 1.4.2.73
  diff -u -r1.4.2.72 -r1.4.2.73
  --- epdom.c	2001/11/12 14:43:18	1.4.2.72
  +++ epdom.c	2001/11/13 07:35:17	1.4.2.73
  @@ -9,7 +9,7 @@
   #   IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
   #   WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
   #
  -#   $Id: epdom.c,v 1.4.2.72 2001/11/12 14:43:18 richter Exp $
  +#   $Id: epdom.c,v 1.4.2.73 2001/11/13 07:35:17 richter Exp $
   #
   ###################################################################################*/
   
  @@ -756,7 +756,7 @@
   	nNdx = ArrayAdd (&pStringTableArray, 1) ;
       
   
  -    pSVKey = newSVpvf (nLen?(char *)sText:"", nLen) ;
  +    pSVKey = newSVpv (nLen?(char *)sText:"", nLen) ;
       pHEKey = hv_fetch_ent (pStringTableHash, pSVKey, 0, 0) ;
   
       if (!pHEKey)
  
  
  
  1.23.4.11 +2 -1      embperl/epeval.c
  
  Index: epeval.c
  ===================================================================
  RCS file: /home/cvs/embperl/epeval.c,v
  retrieving revision 1.23.4.10
  retrieving revision 1.23.4.11
  diff -u -r1.23.4.10 -r1.23.4.11
  --- epeval.c	2001/10/25 08:26:03	1.23.4.10
  +++ epeval.c	2001/11/13 07:35:17	1.23.4.11
  @@ -10,7 +10,7 @@
   #   IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
   #   WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
   #
  -#   $Id: epeval.c,v 1.23.4.10 2001/10/25 08:26:03 richter Exp $
  +#   $Id: epeval.c,v 1.23.4.11 2001/11/13 07:35:17 richter Exp $
   #
   ###################################################################################*/
   
  @@ -213,6 +213,7 @@
               pSVCmd = newSVpvf(sFormatArray, r -> Buf.sEvalPackage, sName, r -> Buf.nSourceline, r -> Buf.pFile -> sSourcefile, sArg, sRef, sName) ;
           else
               pSVCmd = newSVpvf(sFormat, r -> Buf.sEvalPackage, sName, r -> Buf.nSourceline, r -> Buf.pFile -> sSourcefile, sArg, sRef, sName) ;
  +    newSVpvf2(pSVCmd) ;
   
       PUSHMARK(sp);
       n = perl_eval_sv(pSVCmd, G_SCALAR | G_KEEPERR);
  
  
  
  1.75.4.64 +5 -1      embperl/epmain.c
  
  Index: epmain.c
  ===================================================================
  RCS file: /home/cvs/embperl/epmain.c,v
  retrieving revision 1.75.4.63
  retrieving revision 1.75.4.64
  diff -u -r1.75.4.63 -r1.75.4.64
  --- epmain.c	2001/11/12 07:32:22	1.75.4.63
  +++ epmain.c	2001/11/13 07:35:17	1.75.4.64
  @@ -10,7 +10,7 @@
   #   IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
   #   WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
   #
  -#   $Id: epmain.c,v 1.75.4.63 2001/11/12 07:32:22 richter Exp $
  +#   $Id: epmain.c,v 1.75.4.64 2001/11/13 07:35:17 richter Exp $
   #
   ###################################################################################*/
   
  @@ -180,11 +180,13 @@
           if (r -> Buf.nSourceline)
               sprintf (buf, "(%d)", r -> Buf.nSourceline) ;
           pSVLine = newSVpvf ("%s%s:", p, buf) ;
  +	newSVpvf2(pSVLine) ;
           }
   
      
       
       pSV = newSVpvf (msg, r -> nPid , rc, pSVLine?SvPV(pSVLine, l):"", r -> errdat1, r -> errdat2) ;
  +    newSVpvf2(pSV) ;
   
       if (r -> bOptions & optShowBacktrace)
           {
  @@ -2251,6 +2253,7 @@
                   pCookie = newSVpvf ("%s%s=; expires=Thu, 1-Jan-1970 00:00:01 GMT%s%s%s%s",  r -> pConf -> sCookieName, type == 's'?"s":"",
   			    r -> pConf -> sCookieDomain[0]?"; domain=":""  , r -> pConf -> sCookieDomain, 
   			    r -> pConf -> sCookiePath[0]?"; path=":""      , r -> pConf -> sCookiePath) ;
  +		newSVpvf2(pCookie) ;
                   }
   
   	    if (r -> bDebug & dbgSession)  
  @@ -2266,6 +2269,7 @@
   			    r -> pConf -> sCookieDomain[0]?"; domain=":""  , r -> pConf -> sCookieDomain, 
   			    r -> pConf -> sCookiePath[0]?"; path=":""      , r -> pConf -> sCookiePath, 
   			    r -> pConf -> sCookieExpires[0]?"; expires=":"", r -> pConf -> sCookieExpires) ;
  +		newSVpvf2(pCookie) ;
   	        if (r -> bDebug & dbgSession)  
   		    lprintf (r, "[%d]SES:  Send Cookie -> %s\n", r -> nPid, SvPV(pCookie, ldummy)) ; 
                   }
  
  
  
  1.4.2.42  +2 -1      embperl/Attic/epparse.c
  
  Index: epparse.c
  ===================================================================
  RCS file: /home/cvs/embperl/Attic/epparse.c,v
  retrieving revision 1.4.2.41
  retrieving revision 1.4.2.42
  diff -u -r1.4.2.41 -r1.4.2.42
  --- epparse.c	2001/11/12 08:44:29	1.4.2.41
  +++ epparse.c	2001/11/13 07:35:17	1.4.2.42
  @@ -9,7 +9,7 @@
   #   IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
   #   WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
   #
  -#   $Id: epparse.c,v 1.4.2.41 2001/11/12 08:44:29 richter Exp $
  +#   $Id: epparse.c,v 1.4.2.42 2001/11/13 07:35:17 richter Exp $
   #
   ###################################################################################*/
   
  @@ -498,6 +498,7 @@
   
       pSV = newSVpvf("package %s ;\nmy ($_ep_req) = @_;\n#line %d \"%s\"\n%*.*s",
   	    pCurrReq -> Buf.sEvalPackage, nLinenumber, r -> Buf.pFile -> sSourcefile, nLen, nLen, sCode) ;
  +    newSVpvf2(pSV) ;
       args[0] = r -> pReqSV ;
       if ((rc = EvalDirect (r, pSV, 1, args)) != ok)
   	LogError (r, rc) ;
  
  
  
  1.15.4.25 +45 -1     embperl/eputil.c
  
  Index: eputil.c
  ===================================================================
  RCS file: /home/cvs/embperl/eputil.c,v
  retrieving revision 1.15.4.24
  retrieving revision 1.15.4.25
  diff -u -r1.15.4.24 -r1.15.4.25
  --- eputil.c	2001/11/10 15:21:29	1.15.4.24
  +++ eputil.c	2001/11/13 07:35:17	1.15.4.25
  @@ -10,7 +10,7 @@
   #   IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
   #   WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
   #
  -#   $Id: eputil.c,v 1.15.4.24 2001/11/10 15:21:29 richter Exp $
  +#   $Id: eputil.c,v 1.15.4.25 2001/11/13 07:35:17 richter Exp $
   #
   ###################################################################################*/
   
  @@ -1213,6 +1213,7 @@
       */
   
       pSV = newSVpvf ("%s::CLEANUP", sPackage) ;
  +    newSVpvf2(pSV) ;
       s   = SvPV (pSV, l) ;
       pCV = perl_get_cv (s, 0) ;
       if (pCV)
  @@ -1314,6 +1315,7 @@
                   if (sObjName && strcmp (sObjName, "DBIx::Recordset") == 0)
                       {
                       SV * pSV = newSVpvf ("DBIx::Recordset::Undef ('%s')", s) ;
  +		    newSVpvf2(pSV) ;
   
   	            if (bDebug)
   	                lprintf (r, "[%d]CUP: Recordset *%s\n", r -> nPid, s) ;
  @@ -1333,6 +1335,7 @@
                   if (sObjName && strcmp (sObjName, "DBIx::Recordset") == 0)
                       {
                       SV * pSV = newSVpvf ("DBIx::Recordset::Undef ('%s')", s) ;
  +		    newSVpvf2(pSV) ;
   
   	            if (bDebug)
   	                lprintf (r, "[%d]CUP: Recordset *%s\n", r -> nPid, s) ;
  @@ -1473,4 +1476,45 @@
           }
       return pUID ;
       }
  +
  +
  +#ifdef DMALLOC
  +
  +
  +SV * AddDMallocMagic (/*in*/ SV *	pSV,
  +		      /*in*/ char *     sText,
  +		      /*in*/ char *     sFile,
  +		      /*in*/ int        nLine) 
  +
  +    {
  +    char * s = _strdup_leap(sFile, nLine, sText) ;
  +    
  +    sv_unmagic ((SV *)pSV, '?') ;
  +    sv_magic ((SV *)pSV, NULL, '?', (char *)&s, sizeof (s)) ;
  +
  +    return pSV ;
  +    }
  +
  +SV * RemoveDMallocMagic (/*in*/ SV *	pSV,
  +		      /*in*/ char *     sFile,
  +		      /*in*/ int        nLine) 
  +
  +    {
  +    if (pSV -> sv_refcnt == 1)
  +	{
  +	MAGIC * mg ;
  +
  +
  +	if (mg = mg_find (SvRV(pSV), '~'))
  +	    {
  +	    char * s = ((char *)(mg -> mg_ptr)) ;
  +	    _free_leap(sFile, nLine, s) ;
  +	    }
  +	
  +	sv_unmagic ((SV *)pSV, '?') ;
  +	}
  +    return pSV ;
  +    }
  +
  +#endif
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: embperl-cvs-unsubscribe@perl.apache.org
For additional commands, e-mail: embperl-cvs-help@perl.apache.org