Non-\x{..} utf8 in var_dump, fix forcing error state

databind
vitalif 2014-11-28 13:18:18 +00:00 committed by Vitaliy Filippov
parent 9de5cbf035
commit 97664d531e
3 changed files with 14 additions and 2 deletions

View File

@ -15,7 +15,7 @@ sub _Lexer
sub _error
{
my ($self) = @_;
if ($self->YYCurtok ne 'error')
if ($self->YYCurtok ne 'invalid')
{
$self->{lexer}->warn('Unexpected ' . $self->YYCurtok . ($self->YYCurval ? ' ' . $self->YYCurval : ''));
}

View File

@ -243,7 +243,7 @@ sub read_token
}
# Unknown character
$self->warn("Unexpected character '".substr($self->{code}, 0, 1)."'");
return ('error', undef);
return ('invalid', undef);
}
}

View File

@ -363,6 +363,15 @@ sub exec_cmp
return $n ? $a <=> $b : $a cmp $b;
}
# Quote strings without transforming UTF-8 to \x{...}
sub _dumper_qquote
{
my $s = $_[0];
$s = '' unless defined $s;
$s =~ s/\"/\\"/gs;
return '"'.$s.'"';
}
# Data::Dumper
sub var_dump
{
@ -370,6 +379,9 @@ sub var_dump
local $Data::Dumper::Indent = 1;
local $Data::Dumper::Varname = '';
local $Data::Dumper::Sortkeys = 1;
local $Data::Dumper::Useperl = 1;
no warnings 'redefine';
*Data::Dumper::qquote = \&_dumper_qquote;
return scalar Data::Dumper::Dumper(@_);
}