diff options
author | Jesse Luehrs <doy@tozt.net> | 2011-08-05 13:01:05 -0500 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2011-08-05 13:01:05 -0500 |
commit | 08873c7d6ecaaf71a4bd7ced39b6ddb7d9c10e26 (patch) | |
tree | f70913f49b10a1f693a62d6779af192fba802f39 | |
parent | bf460ff3ce8c2e4bff5d7d8cf171f535a116e431 (diff) | |
download | package-stash-xs-08873c7d6ecaaf71a4bd7ced39b6ddb7d9c10e26.tar.gz package-stash-xs-08873c7d6ecaaf71a4bd7ced39b6ddb7d9c10e26.zip |
use a non-broken test for scalar values (t0m, rafl)
-rw-r--r-- | XS.xs | 8 | ||||
-rwxr-xr-x | t/07-edge-cases.t | 6 |
2 files changed, 9 insertions, 5 deletions
@@ -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: diff --git a/t/07-edge-cases.t b/t/07-edge-cases.t index acd92e8..6bed48e 100755 --- a/t/07-edge-cases.t +++ b/t/07-edge-cases.t @@ -63,6 +63,12 @@ is(exception { $Bar->add_symbol('$foo', \$foo) }, undef, "can add PVIV values"); is(exception { $Bar->add_symbol('$bar', \$bar) }, undef, "can add PVNV values"); +is(exception { bless \$bar, 'Foo'; $Bar->add_symbol('$bar2', $bar) }, undef, + "can add PVMG values"); +is(exception { $Bar->add_symbol('$baz', qr/foo/) }, undef, + "can add regex values"); +is(exception { undef $bar; $Bar->add_symbol('$quux', \$bar) }, undef, + "can add undef values that aren't NULL"); use_ok('CompileTime'); |