Revision history for Perl extension ExtUtils::ParseXS.
+3.04 - Thu Aug 25 08:20:00 CET 2011
+
+ - Stable release based on 3.03_03, no functional changes.
+
+3.03_03 - Wed Aug 24 19:43:00 CET 2011
+
+ - Try to fix regression for input-typemap override in XS argument
+ list. (CPAN RT #70448)
+
- Explicit versions in submodules to fail early if something
goes wrong.
our $VERSION;
BEGIN {
- $VERSION = '3.03_02';
+ $VERSION = '3.04';
}
use ExtUtils::ParseXS::Constants $VERSION;
use ExtUtils::ParseXS::CountLines $VERSION;
$_ = '';
check_conditional_preprocessor_statements();
while (@{ $self->{line} }) {
+
$self->CASE_handler($_) if $self->check_keyword("CASE");
print Q(<<"EOF");
# $self->{except} [[
$self->{deferred} = "";
%{ $self->{arg_list} } = ();
$self->{gotRETVAL} = 0;
-
$self->INPUT_handler($_);
$self->process_keyword("INPUT|PREINIT|INTERFACE_MACRO|C_ARGS|ALIAS|ATTRS|PROTOTYPE|SCOPE|OVERLOAD");
my $var_init = '';
$var_init = $1 if s/\s*([=;+].*)$//s;
$var_init =~ s/"/\\"/g;
+ # *sigh* It's valid to supply explicit input typemaps in the argument list...
+ my $is_overridden_typemap = $var_init =~ /ST\s*\(|\$arg\b/;
s/\s+/ /g;
my ($var_type, $var_addr, $var_name) = /^(.*?[^&\s])\s*(\&?)\s*\b(\w+)$/s
if ($self->{var_num}) {
my $typemap = $self->{typemap}->get_typemap(ctype => $var_type);
$self->death("Could not find a typemap for C type '$var_type'")
- if not $typemap;
+ if not $typemap and not $is_overridden_typemap;
$self->{proto_arg}->[$self->{var_num}] = ($typemap && $typemap->proto) || "\$";
}
$self->{func_args} =~ s/\b($var_name)\b/&$1/ if $var_addr;