diff options
Diffstat (limited to 'ext/B/B/Deparse.pm')
-rw-r--r-- | ext/B/B/Deparse.pm | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/ext/B/B/Deparse.pm b/ext/B/B/Deparse.pm index 9ba24420b8..5685d0914f 100644 --- a/ext/B/B/Deparse.pm +++ b/ext/B/B/Deparse.pm @@ -570,7 +570,6 @@ sub new { $self->{'ambient_warnings'} = undef; # Assume no lexical warnings $self->{'ambient_hints'} = 0; $self->{'ambient_hinthash'} = undef; - $self->{'inlined_constants'} = $self->scan_for_constants; $self->init(); while (my $arg = shift @_) { @@ -3655,10 +3654,16 @@ sub const { if (class($sv) eq "SPECIAL") { # sv_undef, sv_yes, sv_no return ('undef', '1', $self->maybe_parens("!1", $cx, 21))[$$sv-1]; - } elsif (class($sv) eq "NULL") { + } + if (class($sv) eq "NULL") { return 'undef'; - } elsif ($cx and my $const = $self->{'inlined_constants'}->{ 0 + $sv->object_2svref }) { - return $const; + } + if ($cx) { + unless ($self->{'inlined_constants'}) { + $self->{'inlined_constants'} = $self->scan_for_constants; + } + my $const = $self->{'inlined_constants'}->{ 0 + $sv->object_2svref }; + return $const if $const; } # convert a version object into the "v1.2.3" string in its V magic if ($sv->FLAGS & SVs_RMG) { |