perl-ExtUtils-ParseXS/perl-5.29.5-perl-133654-don-t-include-OUTLIST-parameters-in-the-.patch

67 lines
2.2 KiB
Diff
Raw Normal View History

From 028027e3fb6bba4f720b334e63e26f97a49cf6be Mon Sep 17 00:00:00 2001
From: Tony Cook <tony@develop-help.com>
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ř <ppisar@redhat.com>
---
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