--- AnyEvent/lib/AnyEvent/Handle.pm 2009/01/21 06:01:35 1.112 +++ AnyEvent/lib/AnyEvent/Handle.pm 2009/01/21 06:06:22 1.114 @@ -1174,22 +1174,15 @@ my $json = $self->{json} ||= JSON->new->utf8; sub { - eval { - my $ref = $json->incr_parse ($self->{rbuf}); + my $ref = eval { $json->incr_parse ($self->{rbuf}) }; - if ($ref) { - $self->{rbuf} = $json->incr_text; - $json->incr_text = ""; - $cb->($self, $ref); - - 1 - } else { - $self->{rbuf} = ""; - () - } + if ($ref) { + $self->{rbuf} = $json->incr_text; + $json->incr_text = ""; + $cb->($self, $ref); 1 - } or do { + } elsif ($@) { # error case $json->incr_skip; @@ -1197,7 +1190,13 @@ $json->incr_text = ""; $self->_error (&Errno::EBADMSG); - }; + + () + } else { + $self->{rbuf} = ""; + + () + } } };