Your message dated Fri, 16 Jun 2006 11:17:01 +0200
with message-id <[EMAIL PROTECTED]>
and subject line libyaml-perl: Bug in "load" OO method
has caused the attached Bug report to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what I am
talking about this indicates a serious mail system misconfiguration
somewhere.  Please contact me immediately.)

Debian bug tracking system administrator
(administrator, Debian Bugs database)

--- Begin Message ---
Package: libyaml-perl
Version: 0.39-1
Severity: important

Hi.

You'll find here attached 3 files providing a stripped-down version
of a program that uncovered some strange behaviour of the YAML module
when using the "load" method.
In "TY.pm", when using the "Load" function (commented out line), the
behaviour is as expected, but not so with "load" for which the script
produces:
---CUT---
The input is correctly read from file, as you can see:

--- !perl/TY
key: some value

Something wrong happens in the "load" OO method:
Use of uninitialized value in substitution (s///) at /usr/share/perl5/YAML.pm 
line 670.
Use of uninitialized value in substitution (s///) at /usr/share/perl5/YAML.pm 
line 671.
Use of uninitialized value in pattern match (m//) at /usr/share/perl5/YAML.pm 
line 673.
Use of uninitialized value in length at /usr/share/perl5/YAML.pm line 675.
Use of uninitialized value in split at /usr/share/perl5/YAML.pm line 678.
And the "dump" shows that the input was not correctly loaded:

--- !perl/TY
key: ~

---CUT---

In the full program I was working on, the side-effect was even stranger: I 
didn't
get any of the above error messages from inside YAML.pm *but* on return from the
"load" method, my variable didn't contain the unserialized "TY" object but the
enclosing data (the equivalent of "$config" in the script provided here)!
[Obviously that doesn't happen with the reduced script, but why, I don't 
know...]


Regards,
Gilles

-- System Information:
Debian Release: testing/unstable
  APT prefers unstable
  APT policy: (500, 'unstable'), (500, 'testing'), (500, 'stable')
Architecture: amd64 (x86_64)
Shell:  /bin/sh linked to /bin/bash
Kernel: Linux 2.6.14-vs2.1.0-rc5+g3
Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968)

Versions of packages libyaml-perl depends on:
ii  perl                          5.8.7-7    Larry Wall's Practical Extraction 

libyaml-perl recommends no packages.

-- no debconf information
package TY ;

use strict ;
use YAML ;

sub load {
    my $proto = shift ;
    my $input = shift ;
    my $class = ref( $proto ) || $proto ;

    print
	'The input is correctly read from file, as you can see:',
	"\n\n",
	$input,
	"\n" ;
    print
	'Something wrong happens in the "load" OO method:',
	"\n" ;

    my $self = YAML->new->load( $input ) ;
#    my $self = Load( $input ) ;

    return __PACKAGE__->new( $self->{'key'} ) ;
}

sub new {
    my $proto = shift ;
    my $class = ref( $proto ) || $proto ;

    my $arg = shift ;
    my $self = { key => $arg } ;

    bless( $self, $class ) ;

    return $self ;
}


sub dump {
    my $self = shift ;
    return YAML->new->dump( $self ) ;
}


1 ;
--- !perl/TY
key: some value
#!/usr/bin/perl -w

use strict ;
use TY ;
use IO::File ;

my $config = { 'input' => [ { 'ty' => 'ty.yaml' } ] } ;

my @input = @{$config->{'input'}} ;
for ( my $i = 0 ; $i < @input ; $i++ ) {

    my $ty = TY->load( join( '', &readTY( $input[$i]->{'ty'} ) ) ) ;
    print
	'And the "dump" shows that the input was not correctly loaded:',
	"\n\n",
	$ty->dump,
	"\n" ;
}


sub readTY {
    my $file = shift ;

    my $io = IO::File->new( $file, "r" ) ;
    my @text = $io->getlines ;
    $io->close ;

    return @text ;
}

--- End Message ---
--- Begin Message ---
Hello,

with recent YAML versions you need to make the following changes to
TY.pm to make everything work:

- my $self = YAML->new->load( $input ) ;
+ my $self = YAML->new->loader_object->load( $input ) ;

and

- return YAML->new->dump( $self ) ;
+ return YAML->new->dumper_object->dump( $self ) ;


-Flo

-- 
BOFH excuse #62:
need to wrap system in aluminum foil to fix problem

Attachment: signature.asc
Description: Digital signature


--- End Message ---

Reply via email to