From: Graham B. <gb...@us...> - 2002-02-10 16:12:19
|
Update of /cvsroot/perl-ldap/asn/lib/Convert In directory usw-pr-cvs1:/tmp/cvs-serv8950/lib/Convert Modified Files: ASN1.pm Log Message: Add support for units with one sinlge, unamed entry eg test ::= INTEGER or list ::= SEQUENCE OF OCTET STRING Index: ASN1.pm =================================================================== RCS file: /cvsroot/perl-ldap/asn/lib/Convert/ASN1.pm,v retrieving revision 1.20 retrieving revision 1.21 diff -u -d -r1.20 -r1.21 --- ASN1.pm 22 Jan 2002 11:24:28 -0000 1.20 +++ ASN1.pm 10 Feb 2002 16:12:16 -0000 1.21 @@ -13,7 +13,7 @@ BEGIN { @ISA = qw(Exporter); - $VERSION = '0.15'; + $VERSION = '0.15_01'; %EXPORT_TAGS = ( io => [qw(asn_recv asn_send asn_read asn_write asn_get asn_ready)], @@ -197,14 +197,28 @@ sub decode { my $self = shift; - my $stash = {}; local $SIG{__DIE__}; - eval { _decode($self->{options}, $self->{script}, $stash, 0, length $_[0], undef, [], $_[0]); $stash } - or do { - $self->{'error'} = $@; - undef; + my $ret = eval { + my (%stash, $result); + my $script = $self->{script}; + my $stash = (1 == @$script && !$self->{script}[0][cVAR]) ? \$result : ($result=\%stash); + _decode( + $self->{options}, + $script, + $stash, + 0, + length $_[0], + undef, + [], + $_[0]); + $result; }; + if ($@) { + $self->{'error'} = $@; + return undef; + } + $ret; } |