forwarded 295238 Andrew Molloy <[EMAIL PROTECTED]>
thanks

Hello Andrew,

a user of the Debian package of Ogg::Vorbis::Header::PurePerl, which I
maintain, reported a problem to the debian bug tracking system. The bug
report follows.

Regards,
Florian

On Mon, Feb 14, 2005 at 11:44:49AM -0500, Jeff King wrote:
> Package: libogg-vorbis-header-pureperl-perl
> Version: 0.07-1
> Severity: normal
> Tags: patch
> 
> When calling the comment_tags method, if the Ogg file contains multiple
> instances of a given tag, the tag will appear multiple times in the
> resulting list. However, there is already a method to deal with multiple
> instances of the same tag, which is that the comment method returns a
> list, rather than a scalar. Thus, to actually retrieve the correct list
> of comments, one must manually remove duplicates from the result of the
> comment_tags method.
> 
> As an example, consider the following code:
>   foreach my $k ($ogg->comment_tags()) {
>     foreach my $v ($ogg->comment($k)) {
>       print "$k=$v\n";
>     }
>   }
> When run on an oggfile containing the two comments:
>   foo=bar
>   foo=baz
> the following output is produced:
>   foo=bar
>   foo=baz
>   foo=bar
>   foo=baz
> 
> I suggest instead that comment_tags return a unique list of tags found
> in the file. I have attached a patch which does this, while preserving
> the order of tags as they were found in the file.
> 
> -- System Information:
> Debian Release: 3.1
>   APT prefers unstable
>   APT policy: (500, 'unstable')
> Architecture: i386 (i686)
> Kernel: Linux 2.6.10-1-k7-smp
> Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968)
> 
> Versions of packages libogg-vorbis-header-pureperl-perl depends on:
> ii  perl                          5.8.4-6    Larry Wall's Practical 
> Extraction 
> 
> -- no debconf information

> --- PurePerl.pm.orig  2004-07-07 18:29:41.000000000 -0400
> +++ PurePerl.pm       2005-02-14 11:43:37.000000000 -0500
> @@ -380,6 +380,7 @@
>      $byteCount += 4;
>  
>      $data->{'COMMENT_KEYS'} = [];
> +    my %seen_comments;
>  
>      # finally, read the comments
>      for (my $i = 0; $i < $user_comment_count; $i++)
> @@ -397,7 +398,9 @@
>       my ($value) = $buffer =~ /=(.*)$/;
>  
>       push @{$comments{lc $key}}, $value;
> -     push @{$data->{'COMMENT_KEYS'}}, lc $key;
> +     push @{$data->{'COMMENT_KEYS'}}, lc $key
> +       unless $seen_comments{lc $key};
> +     $seen_comments{lc $key} = 1;
>      }
>      
>      # read past the framing_bit

Attachment: signature.asc
Description: Digital signature

Reply via email to