[PATCH 2/2] Use SvROK() instead of checking if SvTYPE() == SVt_RV

Niko Tyni ntyni at debian.org
Thu May 20 07:09:33 UTC 2010


Perl 5.12 no longer has a separate reference type; SVt_RV is now
the same as SVt_IV. The right way to check if an SV is a reference
is by using SvROK().
---
 epcache.c |    4 ++--
 epcmd.c   |    2 +-
 epcmd2.c  |    4 ++--
 epcomp.c  |   12 ++++++------
 epeval.c  |    2 +-
 5 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/epcache.c b/epcache.c
index fa6e87b..d2c0e74 100644
--- a/epcache.c
+++ b/epcache.c
@@ -265,7 +265,7 @@ int Cache_New (/*in*/ req *             r,
 
     /* lprintf (r -> pApp, "XXXXX Cache_New [%d/%d] pProviders=%x %s  pCacheItems=%x %s  pCachesToRelease=%x %s\n", _getpid(), GetCurrentThreadId(), pProviders, IsBadReadPtr (pProviders,4 )?"bad":"ok", pCacheItems, IsBadReadPtr (pCacheItems, 4)?"bad":"ok", pCachesToRelease, IsBadReadPtr (pCachesToRelease, 4)?"bad":"ok") ; */
 
-    if (SvTYPE(pParam) == SVt_RV)
+    if (SvROK(pParam))
         pParam = SvRV (pParam) ;
 
     if (SvTYPE(pParam) == SVt_PV)
@@ -435,7 +435,7 @@ int Cache_AppendKey               (/*in*/ req *              r,
         }
 
     
-    if (SvTYPE(pParam) == SVt_RV)
+    if (SvROK(pParam))
         pParam = SvRV (pParam) ;
 
     if (SvTYPE(pParam) == SVt_PV)
diff --git a/epcmd.c b/epcmd.c
index 1270369..b5ced42 100644
--- a/epcmd.c
+++ b/epcmd.c
@@ -637,7 +637,7 @@ static int CmdForeach (/*i/o*/ register req * r,
 	    if (pRV == NULL)
                 return rcMissingArgs ;
 
-            if (SvTYPE (pRV) != SVt_RV)
+            if (!SvROK(pRV))
                 {
                 SvREFCNT_dec (pRV) ;
                 return rcNotAnArray ;
diff --git a/epcmd2.c b/epcmd2.c
index 38c52da..8eef9fc 100644
--- a/epcmd2.c
+++ b/epcmd2.c
@@ -426,7 +426,7 @@ SV * Node_replaceChildWithUrlDATA (/*in*/ tReq *        r,
     HV *   pHV ;    
     tDomTree * pDomTree = DomTree_self(xDomTree) ;
 
-    if (SvTYPE(sText) == SVt_RV && SvTYPE((pAV = (AV *)SvRV(sText))) == SVt_PVAV)
+    if (SvROK(sText) && SvTYPE((pAV = (AV *)SvRV(sText))) == SVt_PVAV)
 	{ /* Array reference inside URL */
 	SV ** ppSV ;
 	int i ;
@@ -453,7 +453,7 @@ SV * Node_replaceChildWithUrlDATA (/*in*/ tReq *        r,
     
 	}
 
-    else if (SvTYPE(sText) == SVt_RV && SvTYPE((pHV = (HV *)SvRV(sText))) == SVt_PVHV)
+    else if (SvROK(sText) && SvTYPE((pHV = (HV *)SvRV(sText))) == SVt_PVHV)
 	{ /* Hash reference inside URL */
         HE *	    pEntry ;
         char *	    pKey ;
diff --git a/epcomp.c b/epcomp.c
index d200cc0..3633c42 100644
--- a/epcomp.c
+++ b/epcomp.c
@@ -143,7 +143,7 @@ int embperl_CompileInitItem      (/*i/o*/ register req * r,
 
     ppSV = hv_fetch(pHash, "perlcode", 8, 0) ;  
     if (ppSV != NULL && *ppSV != NULL && 
-        SvTYPE(*ppSV) == SVt_RV && SvTYPE((pAV = (AV *)SvRV(*ppSV))) == SVt_PVAV)
+        SvROK(*ppSV) && SvTYPE((pAV = (AV *)SvRV(*ppSV))) == SVt_PVAV)
 	{ /* Array reference  */
 	int f = AvFILL(pAV) + 1 ;
         int i ;
@@ -176,7 +176,7 @@ int embperl_CompileInitItem      (/*i/o*/ register req * r,
 
     ppSV = hv_fetch(pHash, "compiletimeperlcode", 19, 0) ;  
     if (ppSV != NULL && *ppSV != NULL && 
-        SvTYPE(*ppSV) == SVt_RV && SvTYPE((pAV = (AV *)SvRV(*ppSV))) == SVt_PVAV)
+        SvROK(*ppSV) && SvTYPE((pAV = (AV *)SvRV(*ppSV))) == SVt_PVAV)
 	{ /* Array reference  */
 	int f = AvFILL(pAV) + 1 ;
         int i ;
@@ -420,7 +420,7 @@ static void embperl_CompilePushStack    (/*in*/  tReq * r,
     if (ppSV == NULL)
         return  ;
 
-    if (*ppSV == NULL || SvTYPE (*ppSV) != SVt_RV)
+    if (*ppSV == NULL || !SvROK(*ppSV))
 	{
 	if (*ppSV)
 	    SvREFCNT_dec (*ppSV) ;
@@ -456,7 +456,7 @@ static void embperl_CompilePopStack    (/*in*/  tReq * r,
     SV *    pSV ;
 
     ppSV = hv_fetch((HV *)(pDomTree -> pSV), (char *)sStackName, strlen (sStackName), 0) ;  
-    if (ppSV == NULL || *ppSV == NULL || SvTYPE (*ppSV) != SVt_RV)
+    if (ppSV == NULL || *ppSV == NULL || !SvROK(*ppSV))
         return  ;
 
     pSV = av_pop ((AV *)SvRV (*ppSV)) ;
@@ -486,7 +486,7 @@ static int embperl_CompileMatchStack (/*in*/  tReq * r,
     char *  s ;
 
     ppSV = hv_fetch((HV *)(pDomTree -> pSV), (char *)sStackName, strlen (sStackName), 0) ;  
-    if (ppSV == NULL || *ppSV == NULL || SvTYPE (*ppSV) != SVt_RV)
+    if (ppSV == NULL || *ppSV == NULL || !SvROK(*ppSV))
         {
         strcpy (r -> errdat1, "CompileMatchStack") ;
         strncat (r -> errdat1, (char *)sStackName, sizeof (r -> errdat1) - 20) ;
@@ -541,7 +541,7 @@ static int embperl_CompileAddStack    (/*in*/  tReq * r,
 
 
     ppSV = hv_fetch((HV *)(pDomTree -> pSV), (char *)p, e - p, 0) ;  
-    if (ppSV == NULL || *ppSV == NULL || SvTYPE (*ppSV) != SVt_RV)
+    if (ppSV == NULL || *ppSV == NULL || !SvROK(*ppSV))
         return  op == '!'?1:0 ;
 
     pAV = (AV *)SvRV (*ppSV) ;
diff --git a/epeval.c b/epeval.c
index 1b7cd17..548ef0f 100644
--- a/epeval.c
+++ b/epeval.c
@@ -624,7 +624,7 @@ int EvalOnly           (/*i/o*/ register req * r,
     if (ppSV && *ppSV)
 	 SvREFCNT_dec (*ppSV) ;
 
-    if (rc == ok && pSub != NULL && SvTYPE (pSub) == SVt_RV)
+    if (rc == ok && pSub != NULL && SvROK(pSub))
         {
         /*sv_setsv (*ppSV, pSub) ;*/
         *ppSV = SvRV(pSub) ;
-- 
1.7.1


--rwEMma7ioTxnRzrJ--





More information about the pkg-perl-maintainers mailing list