summaryrefslogtreecommitdiffstats
path: root/XS.xs
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2011-08-05 13:01:05 -0500
committerJesse Luehrs <doy@tozt.net>2011-08-05 13:01:05 -0500
commit08873c7d6ecaaf71a4bd7ced39b6ddb7d9c10e26 (patch)
treef70913f49b10a1f693a62d6779af192fba802f39 /XS.xs
parentbf460ff3ce8c2e4bff5d7d8cf171f535a116e431 (diff)
downloadpackage-stash-xs-08873c7d6ecaaf71a4bd7ced39b6ddb7d9c10e26.tar.gz
package-stash-xs-08873c7d6ecaaf71a4bd7ced39b6ddb7d9c10e26.zip
use a non-broken test for scalar values (t0m, rafl)
Diffstat (limited to 'XS.xs')
-rw-r--r--XS.xs8
1 files changed, 3 insertions, 5 deletions
diff --git a/XS.xs b/XS.xs
index fc3078a..11428d5 100644
--- a/XS.xs
+++ b/XS.xs
@@ -217,11 +217,9 @@ static int _valid_for_type(SV *value, vartype_t type)
switch (type) {
case VAR_SCALAR:
- /* XXX: something weird is going on here - apparently values can
- * be SVt_NULL but also be SvROK (and also, SVt_NULL isn't SvOK) */
- if (sv_type == SVt_NULL)
- return 1;
- return SvROK(value) ? SvOK(SvRV(value)) : SvOK(value);
+ return sv_type != SVt_PVAV && sv_type != SVt_PVHV &&
+ sv_type != SVt_PVCV && sv_type != SVt_PVFM &&
+ sv_type != SVt_PVIO;
case VAR_ARRAY:
return sv_type == SVt_PVAV;
case VAR_HASH: