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;
}
|