From 028027e3fb6bba4f720b334e63e26f97a49cf6be Mon Sep 17 00:00:00 2001 From: Tony Cook Date: Wed, 5 Dec 2018 15:22:52 +1100 Subject: [PATCH] (perl #133654) don't include OUTLIST parameters in the prototype MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The generated prototype (with PROTOTYPES: ENABLE) would include OUTLIST parameters, but these aren't arguments to the perl function. Signed-off-by: Petr Písař --- dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm | 2 +- dist/ExtUtils-ParseXS/t/002-more.t | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm b/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm index e1f0940745..94ea5f6fef 100644 --- a/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm +++ b/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm @@ -467,7 +467,7 @@ EOM $self->{defaults}->{$args[$i]} = $2; $self->{defaults}->{$args[$i]} =~ s/"/\\"/g; } - $self->{proto_arg}->[$i+1] = '$'; + $self->{proto_arg}->[$i+1] = '$' unless $only_C_inlist_ref->{$args[$i]}; } my $min_args = $num_args - $extra_args; $report_args =~ s/"/\\"/g; diff --git a/dist/ExtUtils-ParseXS/t/002-more.t b/dist/ExtUtils-ParseXS/t/002-more.t index 4aaa3ab081..e98229095c 100644 --- a/dist/ExtUtils-ParseXS/t/002-more.t +++ b/dist/ExtUtils-ParseXS/t/002-more.t @@ -9,7 +9,7 @@ use ExtUtils::CBuilder; use attributes; use overload; -plan tests => 29; +plan tests => 30; my ($source_file, $obj_file, $lib_file); @@ -48,7 +48,7 @@ SKIP: { } SKIP: { - skip "no dynamic loading", 25 + skip "no dynamic loading", 26 if !$b->have_compiler || !$Config{usedl}; my $module = 'XSMore'; $lib_file = $b->link( objects => $obj_file, module_name => $module ); @@ -92,6 +92,9 @@ SKIP: { is_deeply [XSMore::outlist()], [ord('a'), ord('b')], 'the OUTLIST keyword'; + # eval so compile-time sees any prototype + is_deeply [ eval 'XSMore::outlist()' ], [ord('a'), ord('b')], 'OUTLIST prototypes'; + is XSMore::len("foo"), 3, 'the length keyword'; is XSMore::sum(5, 9), 14, 'the INCLUDE_COMMAND directive'; -- 2.17.2