--- 3m-810.pl 2009/06/04 13:36:20 41 +++ 3m-810.pl 2009/06/04 13:52:10 42 @@ -261,9 +261,9 @@ $tags_data->{ $tag } = join('', @{ $tag_data_block->{$tag} }); my $item_type_nr = ord(substr( $tags_data->{$tag}, 3, 1 )); - print "DATA $tag ",dump( $tags_data ), " item type: ", ( $item_type->{ $item_type_nr } || "UNKWOWN '$item_type_nr' in " . dump( $item_type ) ), "\n"; + print "DATA $tag ",dump( $tags_data ), " item type: ", ( $item_type->{ $item_type_nr } || "UNKWOWN '$item_type_nr'" ), "\n"; - return $last_block; + return $last_block + 1; } sub read_tag { @@ -451,8 +451,6 @@ sub assert { my ( $from, $to ) = @_; - return unless $assert->{expect}; - $from ||= 0; $to = length( $assert->{expect} ) if ! defined $to; @@ -530,8 +528,8 @@ } sort { length($a) <=> length($b) } keys %$dispatch; warn "?? payload dispatch to ",dump( $payload, $dispatch, $to ) if $debug; - if ( defined $to && $payload ) { - my $rest = substr( $payload, length($to) ); + if ( defined $to ) { + my $rest = substr( $payload, length($to) ) if length($to) < length($payload); warn "## DISPATCH payload to with rest", dump( $payload, $to, $rest ) if $debug; $dispatch->{ $to }->( $rest ); } else {