http://qs1969.pair.com?node_id=539267


in reply to Re: XML::Parser ( or Perl internals ) speed mysticism
in thread XML::Parser ( or Perl internals ) speed mysticism

sfink, your right ! This code working fine !
#!/usr/bin/perl use XML::Parser; our $str; my @arr; my $file = shift; my $parser = new XML::Parser:: Handlers =>{ Char => sub { $str .= $_[1]; return; #clear return value } } ; $parser->parsefile($file);

Replies are listed 'Best First'.
Re^3: XML::Parser ( or Perl internals ) speed mysticism
by PodMaster (Abbot) on Mar 26, 2006 at 16:18 UTC
    sfink, your right ! This code working fine !
    The original code should work fine as well (you've found a bug :)). Since the return value isn't being used for anything, that callback (among others) should be called in void context. The patch is easy, modify Expat.xs, and replace all instances of
    G_DISCARD);
    with
    G_DISCARD|G_VOID);
    I've tested this, and it doesn't seem break anything.

    I've also filed a bug report.

    MJD says "you can't just make shit up and expect the computer to know what you mean, retardo!"
    I run a Win32 PPM repository for perl 5.6.x and 5.8.x -- I take requests (README).
    ** The third rule of perl club is a statement of fact: pod is sexy.