This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
In B::Deparse::_features_from_bundle(), don't call feature::current_bundle()
authorNicholas Clark <nick@ccl4.org>
Tue, 28 Feb 2012 22:30:30 +0000 (23:30 +0100)
committerNicholas Clark <nick@ccl4.org>
Mon, 19 Mar 2012 09:21:54 +0000 (10:21 +0100)
Instead, directly access feature's package variables, as B::Deparse already
does in 14 other places. (It also has its tentacles firmly into strict
and warning's package variables - it's not fussy)

feature::current_bundle() was not part of the documented API of feature
either, so B::Deparse wasn't clean previously.

dist/B-Deparse/Deparse.pm

index 2bd6b63..eb24214 100644 (file)
@@ -1451,10 +1451,7 @@ sub seq_subs {
 
 sub _features_from_bundle {
     my ($hints, $hh) = @_;
-    local $^H = $hints;
-    # Shh! Keep quite about this function.  It is not to be
-    # relied upon.
-    foreach (@{feature::current_bundle()}) {
+    foreach (@{$feature::feature_bundle{@feature::hint_bundles[$hints >> $feature::hint_shift]}}) {
        $hh->{$feature::feature{$_}} = 1;
     }
     return $hh;
@@ -1689,7 +1686,7 @@ sub keyword {
        my $hh;
        my $hints = $self->{hints} & $feature::hint_mask;
        if ($hints && $hints != $feature::hint_mask) {
-           $hh = _features_from_bundle($self->{hints});
+           $hh = _features_from_bundle($hints);
        }
        elsif ($hints) { $hh = $self->{'hinthash'} }
        return "CORE::$name"