diff options
-rw-r--r-- | MANIFEST | 1 | ||||
-rw-r--r-- | dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Utilities.pm | 2 | ||||
-rw-r--r-- | dist/ExtUtils-ParseXS/t/001-basic.t | 20 | ||||
-rw-r--r-- | dist/ExtUtils-ParseXS/t/XSNoMap.xs | 16 |
4 files changed, 37 insertions, 2 deletions
@@ -3964,6 +3964,7 @@ dist/ExtUtils-ParseXS/t/XSFalsePositive.xs Test file for ExtUtils::ParseXS tes dist/ExtUtils-ParseXS/t/XSFalsePositive2.xs Test file for ExtUtils::ParseXS tests dist/ExtUtils-ParseXS/t/XSInclude.xsh Test file for ExtUtils::ParseXS tests dist/ExtUtils-ParseXS/t/XSMore.xs Test file for ExtUtils::ParseXS tests +dist/ExtUtils-ParseXS/t/XSNoMap.xs dist/ExtUtils-ParseXS/t/XSTest.pm Test file for ExtUtils::ParseXS tests dist/ExtUtils-ParseXS/t/XSTest.xs Test file for ExtUtils::ParseXS tests dist/ExtUtils-ParseXS/t/XSTightDirectives.xs Test file for ExtUtils::ParseXS tests diff --git a/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Utilities.pm b/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Utilities.pm index 054cbb26fb..904f53324e 100644 --- a/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Utilities.pm +++ b/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Utilities.pm @@ -771,7 +771,7 @@ sub blurt { =cut sub death { - my $self = (@_); + my ($self) = (@_); my $message = _MsgHint(@_,""); if ($self->{die_on_error}) { die $message; diff --git a/dist/ExtUtils-ParseXS/t/001-basic.t b/dist/ExtUtils-ParseXS/t/001-basic.t index d983476a5a..630da799b1 100644 --- a/dist/ExtUtils-ParseXS/t/001-basic.t +++ b/dist/ExtUtils-ParseXS/t/001-basic.t @@ -1,7 +1,7 @@ #!/usr/bin/perl use strict; -use Test::More tests => 28; +use Test::More tests => 30; use Config; use DynaLoader; use ExtUtils::CBuilder; @@ -350,6 +350,24 @@ EOF_CONTENT "The version in perlxs.pod should match the version of ExtUtils::ParseXS"); } +{ + my $pxs = ExtUtils::ParseXS->new; + tie *FH, 'Foo'; + my $exception; + my $stderr = PrimitiveCapture::capture_stderr(sub { + eval { + $pxs->process_file( + filename => "XSNoMap.xs", + output => \*FH, + ); + 1; + } or $exception = $@; + }); + is($stderr, undef, "should fail to parse"); + like($exception, qr/Could not find a typemap for C type 'S \*'/, + "check we throw rather than trying to deref '2'"); +} + ##################################################################### sub Foo::TIEHANDLE { bless {}, 'Foo' } diff --git a/dist/ExtUtils-ParseXS/t/XSNoMap.xs b/dist/ExtUtils-ParseXS/t/XSNoMap.xs new file mode 100644 index 0000000000..3ec199f349 --- /dev/null +++ b/dist/ExtUtils-ParseXS/t/XSNoMap.xs @@ -0,0 +1,16 @@ +#include "EXTERN.h" +#include "perl.h" +#include "XSUB.h" + +typedef struct { int a; } S; + +static void +xsnomap_unknown(S* p) { +} + +MODULE = XSNoMap PACKAGE = XSNoMap PREFIX = xsnomap_ + +PROTOTYPES: DISABLE + +void +xsnomap_unknown(S *arg) |