use correct scalar test (reported by Roland van Ipenburg) 0.18
Jesse Luehrs [Wed, 5 Jan 2011 19:05:28 +0000 (13:05 -0600)]
Changes
XS.xs

diff --git a/Changes b/Changes
index dc4f256..9aeb67f 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,6 +1,7 @@
 Revision history for Package-Stash
 
 {{$NEXT}}
+      - more correct validity test for scalars (rafl, Roland van Ipenburg)
 
 0.17  2010-11-16
       - bah, get rid of extra junk in the tarball
diff --git a/XS.xs b/XS.xs
index 5957b1a..a32ca45 100644 (file)
--- a/XS.xs
+++ b/XS.xs
@@ -213,11 +213,7 @@ int _valid_for_type(SV *value, vartype_t type)
 
     switch (type) {
     case VAR_SCALAR:
-        return sv_type == SVt_NULL ||
-               sv_type == SVt_IV   ||
-               sv_type == SVt_NV   ||
-               sv_type == SVt_PV   ||
-               sv_type == SVt_RV;
+        return SvROK(value) ? SvOK(SvRV(value)) : SvOK(value);
     case VAR_ARRAY:
         return sv_type == SVt_PVAV;
     case VAR_HASH: