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