Closed cjg-cguevara closed 2 months ago
c9ef0c796424d557643d76b17502208ccfb60c76 introduced broken code in ExtUtils::ParseXS process_file (search for $}
):
print "\t" . $self->map_type("self->{xsub_$}class *");
$self->{xsub_map_argname_to_type}->{"THIS"} = "self->{xsub_$}class *";
probably should be
print "\t" . $self->map_type("self->{xsub_class} *");
$self->{xsub_map_argname_to_type}->{"THIS"} = "self->{xsub_class} *";
Not sure what happened here. Search/replace gone wrong? @iabyn
Breaking commit confirmed as:
commit c9ef0c796424d557643d76b17502208ccfb60c76 (refs/bisect/bad)
Author: David Mitchell <davem@iabyn.nospamdeletethisbit.com>
AuthorDate: Fri Aug 16 19:52:27 2024 +0100
Commit: David Mitchell <davem@iabyn.nospamdeletethisbit.com>
CommitDate: Mon Aug 19 11:32:03 2024 +0100
ParseXS: turn some lex vars into object fields
Locally I attempted to follow @mauke's suggestion above. I created a branch, modified code and installed it locally:
commit db62df9e97a3f67b2cfd9ae6955b50ffe3cb095c
Author: James E Keenan <jkeenan@cpan.org>
AuthorDate: Fri Aug 30 07:18:39 2024 -0400
Commit: James E Keenan <jkeenan@cpan.org>
CommitDate: Fri Aug 30 07:48:46 2024 -0400
Correct mistyped code in GH #22551
Per mauke's analysis.
Version bump in all *pm files and perlxs
diff --git a/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm b/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm
index c97757941f..6760d7f053 100644
--- a/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm
+++ b/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm
@@ -59,7 +59,7 @@ use Symbol;
our $VERSION;
BEGIN {
- $VERSION = '3.53';
+ $VERSION = '3.54';
require ExtUtils::ParseXS::Constants; ExtUtils::ParseXS::Constants->VERSION($VERSION);
require ExtUtils::ParseXS::CountLines; ExtUtils::ParseXS::CountLines->VERSION($VERSION);
require ExtUtils::ParseXS::Utilities; ExtUtils::ParseXS::Utilities->VERSION($VERSION);
@@ -1353,8 +1353,8 @@ EOF
} );
}
else {
- print "\t" . $self->map_type("self->{xsub_$}class *");
- $self->{xsub_map_argname_to_type}->{"THIS"} = "self->{xsub_$}class *";
+ print "\t" . $self->map_type("self->{xsub_class} *");
+ $self->{xsub_map_argname_to_type}->{"THIS"} = "self->{xsub_class} *";
$self->generate_init( {
type => "$self->{xsub_class} *",
num => 1,
diff --git a/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Constants.pm b/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Constants.pm
index 0c627eea66..1da9ae8ae4 100644
--- a/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Constants.pm
+++ b/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Constants.pm
@@ -3,7 +3,7 @@ use strict;
use warnings;
use Symbol;
-our $VERSION = '3.53';
+our $VERSION = '3.54';
=head1 NAME
diff --git a/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/CountLines.pm b/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/CountLines.pm
index 4a313b8469..aa556cc873 100644
--- a/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/CountLines.pm
+++ b/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/CountLines.pm
@@ -1,7 +1,7 @@
package ExtUtils::ParseXS::CountLines;
use strict;
-our $VERSION = '3.53';
+our $VERSION = '3.54';
our $SECTION_END_MARKER;
diff --git a/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Eval.pm b/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Eval.pm
index 10f91d803a..dce4b4b19b 100644
--- a/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Eval.pm
+++ b/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Eval.pm
@@ -2,7 +2,7 @@ package ExtUtils::ParseXS::Eval;
use strict;
use warnings;
-our $VERSION = '3.53';
+our $VERSION = '3.54';
=head1 NAME
diff --git a/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Utilities.pm b/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Utilities.pm
index 4ee2986594..f5a3a7472e 100644
--- a/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Utilities.pm
+++ b/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Utilities.pm
@@ -5,7 +5,7 @@ use Exporter;
use File::Spec;
use ExtUtils::ParseXS::Constants ();
-our $VERSION = '3.53';
+our $VERSION = '3.54';
our (@ISA, @EXPORT_OK);
@ISA = qw(Exporter);
diff --git a/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps.pm b/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps.pm
index c1f51d410b..7046c491d9 100644
--- a/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps.pm
+++ b/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps.pm
@@ -2,7 +2,7 @@ package ExtUtils::Typemaps;
use 5.006001;
use strict;
use warnings;
-our $VERSION = '3.53';
+our $VERSION = '3.54';
require ExtUtils::ParseXS;
require ExtUtils::ParseXS::Constants;
diff --git a/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/Cmd.pm b/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/Cmd.pm
index 8d86bfddb6..dbf8e0a84f 100644
--- a/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/Cmd.pm
+++ b/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/Cmd.pm
@@ -2,7 +2,7 @@ package ExtUtils::Typemaps::Cmd;
use 5.006001;
use strict;
use warnings;
-our $VERSION = '3.53';
+our $VERSION = '3.54';
use ExtUtils::Typemaps;
diff --git a/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/InputMap.pm b/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/InputMap.pm
index d0ee1aeec9..6801f253fc 100644
--- a/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/InputMap.pm
+++ b/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/InputMap.pm
@@ -2,7 +2,7 @@ package ExtUtils::Typemaps::InputMap;
use 5.006001;
use strict;
use warnings;
-our $VERSION = '3.53';
+our $VERSION = '3.54';
=head1 NAME
diff --git a/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/OutputMap.pm b/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/OutputMap.pm
index 8fee130e42..f389e7c254 100644
--- a/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/OutputMap.pm
+++ b/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/OutputMap.pm
@@ -2,7 +2,7 @@ package ExtUtils::Typemaps::OutputMap;
use 5.006001;
use strict;
use warnings;
-our $VERSION = '3.53';
+our $VERSION = '3.54';
=head1 NAME
diff --git a/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/Type.pm b/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/Type.pm
index acf67cabad..e1cfa68e9f 100644
--- a/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/Type.pm
+++ b/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/Type.pm
@@ -4,7 +4,7 @@ use strict;
use warnings;
require ExtUtils::Typemaps;
-our $VERSION = '3.53';
+our $VERSION = '3.54';
=head1 NAME
diff --git a/dist/ExtUtils-ParseXS/lib/perlxs.pod b/dist/ExtUtils-ParseXS/lib/perlxs.pod
index 3ac8c4783d..748608efe7 100644
--- a/dist/ExtUtils-ParseXS/lib/perlxs.pod
+++ b/dist/ExtUtils-ParseXS/lib/perlxs.pod
@@ -2209,7 +2209,7 @@ this model, the less likely conflicts will occur.
=head1 XS VERSION
This document covers features supported by C<ExtUtils::ParseXS>
-(also known as C<xsubpp>) 3.53
+(also known as C<xsubpp>) 3.54
=head1 AUTHOR DIAGNOSTICS
However, when I attempted to install Tie-Hash-Indexed-0.08 against that perl, I got build-time errors similar to those reported in http://www.cpantesters.org/cpan/report/97abdb98-6592-11ef-93e9-cd137bb966e1, but without all the uninitialized value warnings.
cc -c -I. -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -DVERSION=\"0.08\" -DXS_VERSION=\"0.08\" -fPIC "-I/home/jkeenan/testing/e69f0e4ba2/lib/perl5/5.41.4/x86_64-linux/CORE" -DNDEBUG Indexed.c
Indexed.c: In function ‘XS_Tie__Hash__Indexed__Iterator_DESTROY’:
Indexed.c:518:9: error: ‘self’ undeclared (first use in this function)
518 | self->{xsub_class} * THIS;
| ^~~~
Indexed.c:518:9: note: each undeclared identifier is reported only once for each function it appears in
Indexed.c:518:15: error: expected identifier before ‘{’ token
518 | self->{xsub_class} * THIS;
| ^
Indexed.c:523:11: error: ‘THIS’ undeclared (first use in this function)
523 | THIS = INT2PTR(Iterator *, tmp);
| ^~~~
Indexed.c: In function ‘XS_Tie__Hash__Indexed__Iterator_next’:
Indexed.c:552:9: error: ‘self’ undeclared (first use in this function)
552 | self->{xsub_class} * THIS;
| ^~~~
Indexed.c:552:15: error: expected identifier before ‘{’ token
552 | self->{xsub_class} * THIS;
| ^
Indexed.c:557:11: error: ‘THIS’ undeclared (first use in this function)
557 | THIS = INT2PTR(Iterator *, tmp);
| ^~~~
Indexed.c: In function ‘XS_Tie__Hash__Indexed__Iterator_valid’:
Indexed.c:590:9: error: ‘self’ undeclared (first use in this function)
590 | self->{xsub_class} * THIS;
| ^~~~
Indexed.c:590:15: error: expected identifier before ‘{’ token
590 | self->{xsub_class} * THIS;
| ^
Indexed.c:596:11: error: ‘THIS’ undeclared (first use in this function)
596 | THIS = INT2PTR(Iterator *, tmp);
| ^~~~
Indexed.c: In function ‘XS_Tie__Hash__Indexed__Iterator_key’:
Indexed.c:622:9: error: ‘self’ undeclared (first use in this function)
622 | self->{xsub_class} * THIS;
| ^~~~
Indexed.c:622:15: error: expected identifier before ‘{’ token
622 | self->{xsub_class} * THIS;
| ^
Indexed.c:627:11: error: ‘THIS’ undeclared (first use in this function)
627 | THIS = INT2PTR(Iterator *, tmp);
| ^~~~
Indexed.c: In function ‘XS_Tie__Hash__Indexed_DESTROY’:
Indexed.c:708:9: error: ‘self’ undeclared (first use in this function)
708 | self->{xsub_class} * THIS;
| ^~~~
Indexed.c:708:15: error: expected identifier before ‘{’ token
708 | self->{xsub_class} * THIS;
| ^
Indexed.c:713:11: error: ‘THIS’ undeclared (first use in this function)
713 | THIS = INT2PTR(IXHV *, tmp);
| ^~~~
Indexed.c: In function ‘XS_Tie__Hash__Indexed_FETCH’:
Indexed.c:770:9: error: ‘self’ undeclared (first use in this function)
770 | self->{xsub_class} * THIS;
| ^~~~
Indexed.c:770:15: error: expected identifier before ‘{’ token
770 | self->{xsub_class} * THIS;
| ^
Indexed.c:775:11: error: ‘THIS’ undeclared (first use in this function)
775 | THIS = INT2PTR(IXHV *, tmp);
| ^~~~
Indexed.c: In function ‘XS_Tie__Hash__Indexed_STORE’:
Indexed.c:815:9: error: ‘self’ undeclared (first use in this function)
815 | self->{xsub_class} * THIS;
| ^~~~
Indexed.c:815:15: error: expected identifier before ‘{’ token
815 | self->{xsub_class} * THIS;
| ^
Indexed.c:820:11: error: ‘THIS’ undeclared (first use in this function)
820 | THIS = INT2PTR(IXHV *, tmp);
| ^~~~
Indexed.c: In function ‘XS_Tie__Hash__Indexed_FIRSTKEY’:
Indexed.c:867:9: error: ‘self’ undeclared (first use in this function)
867 | self->{xsub_class} * THIS;
| ^~~~
Indexed.c:867:15: error: expected identifier before ‘{’ token
867 | self->{xsub_class} * THIS;
| ^
Indexed.c:872:11: error: ‘THIS’ undeclared (first use in this function)
872 | THIS = INT2PTR(IXHV *, tmp);
| ^~~~
Indexed.c: In function ‘XS_Tie__Hash__Indexed_NEXTKEY’:
Indexed.c:912:9: error: ‘self’ undeclared (first use in this function)
912 | self->{xsub_class} * THIS;
| ^~~~
Indexed.c:912:15: error: expected identifier before ‘{’ token
912 | self->{xsub_class} * THIS;
| ^
Indexed.c:917:11: error: ‘THIS’ undeclared (first use in this function)
917 | THIS = INT2PTR(IXHV *, tmp);
| ^~~~
Indexed.c: In function ‘XS_Tie__Hash__Indexed_EXISTS’:
Indexed.c:958:9: error: ‘self’ undeclared (first use in this function)
958 | self->{xsub_class} * THIS;
| ^~~~
Indexed.c:958:15: error: expected identifier before ‘{’ token
958 | self->{xsub_class} * THIS;
| ^
Indexed.c:963:11: error: ‘THIS’ undeclared (first use in this function)
963 | THIS = INT2PTR(IXHV *, tmp);
| ^~~~
Indexed.c: In function ‘XS_Tie__Hash__Indexed_DELETE’:
Indexed.c:1006:9: error: ‘self’ undeclared (first use in this function)
1006 | self->{xsub_class} * THIS;
| ^~~~
Indexed.c:1006:15: error: expected identifier before ‘{’ token
1006 | self->{xsub_class} * THIS;
| ^
Indexed.c:1011:11: error: ‘THIS’ undeclared (first use in this function)
1011 | THIS = INT2PTR(IXHV *, tmp);
| ^~~~
Indexed.c: In function ‘XS_Tie__Hash__Indexed_CLEAR’:
Indexed.c:1070:9: error: ‘self’ undeclared (first use in this function)
1070 | self->{xsub_class} * THIS;
| ^~~~
Indexed.c:1070:15: error: expected identifier before ‘{’ token
1070 | self->{xsub_class} * THIS;
| ^
Indexed.c:1075:11: error: ‘THIS’ undeclared (first use in this function)
1075 | THIS = INT2PTR(IXHV *, tmp);
| ^~~~
Indexed.c: In function ‘XS_Tie__Hash__Indexed_SCALAR’:
Indexed.c:1112:9: error: ‘self’ undeclared (first use in this function)
1112 | self->{xsub_class} * THIS;
| ^~~~
Indexed.c:1112:15: error: expected identifier before ‘{’ token
1112 | self->{xsub_class} * THIS;
| ^
Indexed.c:1117:11: error: ‘THIS’ undeclared (first use in this function)
1117 | THIS = INT2PTR(IXHV *, tmp);
| ^~~~
Indexed.c: In function ‘XS_Tie__Hash__Indexed_items’:
Indexed.c:1163:9: error: ‘self’ undeclared (first use in this function)
1163 | self->{xsub_class} * THIS;
| ^~~~
Indexed.c:1163:15: error: expected identifier before ‘{’ token
1163 | self->{xsub_class} * THIS;
| ^
Indexed.c:1168:11: error: ‘THIS’ undeclared (first use in this function)
1168 | THIS = INT2PTR(IXHV *, tmp);
| ^~~~
Indexed.c: In function ‘XS_Tie__Hash__Indexed_merge’:
Indexed.c:1260:9: error: ‘self’ undeclared (first use in this function)
1260 | self->{xsub_class} * THIS;
| ^~~~
Indexed.c:1260:15: error: expected identifier before ‘{’ token
1260 | self->{xsub_class} * THIS;
| ^
Indexed.c:1265:11: error: ‘THIS’ undeclared (first use in this function)
1265 | THIS = INT2PTR(IXHV *, tmp);
| ^~~~
Indexed.c: In function ‘XS_Tie__Hash__Indexed_pop’:
Indexed.c:1332:9: error: ‘self’ undeclared (first use in this function)
1332 | self->{xsub_class} * THIS;
| ^~~~
Indexed.c:1332:15: error: expected identifier before ‘{’ token
1332 | self->{xsub_class} * THIS;
| ^
Indexed.c:1337:11: error: ‘THIS’ undeclared (first use in this function)
1337 | THIS = INT2PTR(IXHV *, tmp);
| ^~~~
Indexed.c: In function ‘XS_Tie__Hash__Indexed_iterator’:
Indexed.c:1394:9: error: ‘self’ undeclared (first use in this function)
1394 | self->{xsub_class} * THIS;
| ^~~~
Indexed.c:1394:15: error: expected identifier before ‘{’ token
1394 | self->{xsub_class} * THIS;
| ^
Indexed.c:1399:11: error: ‘THIS’ undeclared (first use in this function)
1399 | THIS = INT2PTR(IXHV *, tmp);
| ^~~~
Indexed.c: In function ‘XS_Tie__Hash__Indexed_preinc’:
Indexed.c:1444:9: error: ‘self’ undeclared (first use in this function)
1444 | self->{xsub_class} * THIS;
| ^~~~
Indexed.c:1444:15: error: expected identifier before ‘{’ token
1444 | self->{xsub_class} * THIS;
| ^
Indexed.c:1449:11: error: ‘THIS’ undeclared (first use in this function)
1449 | THIS = INT2PTR(IXHV *, tmp);
| ^~~~
Indexed.c: In function ‘XS_Tie__Hash__Indexed_add’:
Indexed.c:1522:9: error: ‘self’ undeclared (first use in this function)
1522 | self->{xsub_class} * THIS;
| ^~~~
Indexed.c:1522:15: error: expected identifier before ‘{’ token
1522 | self->{xsub_class} * THIS;
| ^
Indexed.c:1527:11: error: ‘THIS’ undeclared (first use in this function)
1527 | THIS = INT2PTR(IXHV *, tmp);
| ^~~~
Indexed.c: In function ‘XS_Tie__Hash__Indexed_STORABLE_freeze’:
Indexed.c:1627:9: error: ‘self’ undeclared (first use in this function)
1627 | self->{xsub_class} * THIS;
| ^~~~
Indexed.c:1627:15: error: expected identifier before ‘{’ token
1627 | self->{xsub_class} * THIS;
| ^
Indexed.c:1632:11: error: ‘THIS’ undeclared (first use in this function)
1632 | THIS = INT2PTR(IXHV *, tmp);
| ^~~~
make: *** [Makefile:342: Indexed.o] Error 1
MHX/Tie-Hash-Indexed-0.08.tar.gz
/usr/bin/make -- NOT OK
And here I reach the limits of my C foo. @iabyn, can you take a look? Thanks.
There's a $
missing in the both changed lines, self
should be $self
This is a bug report for perl from "Carlos Guevara" carlos@carlosguevara.com, generated with the help of perlbug 1.43 running under perl 5.41.3.
BBC: Blead Breaks Tie::Hash::Indexed
Please see http://fast-matrix.cpantesters.org/?dist=Tie::Hash::Indexed
Flags
severity=low
Perl configuration
Configured by cpan at Thu Aug 29 03:49:54 EDT 2024.
Summary of my perl5 (revision 5 version 41 subversion 3) configuration: Commit id: 6c2bf33dc96a631e0d86e584bcce24f001e8a215 Platform: osname=linux osvers=5.14.0-427.33.1.el9_4.x86_64 archname=x86_64-linux uname='linux cjg-rhel9 5.14.0-427.33.1.el9_4.x86_64 #1 smp preempt_dynamic fri aug 16 10:56:24 edt 2024 x86_64 x86_64 x86_64 gnulinux ' config_args='-des -Dprefix=/home/cpan/bin/perl -Dscriptdir=/home/cpan/bin/perl/bin -Dusedevel -Duse64bitall' hint=recommended useposix=true d_sigaction=define useithreads=undef usemultiplicity=undef use64bitint=define use64bitall=define uselongdouble=undef usemymalloc=n default_inc_excludes_dot=define Compiler: cc='cc' ccflags ='-fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2' optimize='-O2' cppflags='-fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include' ccversion='' gccversion='11.4.1 20231218 (Red Hat 11.4.1-3)' gccosandvers='' intsize=4 longsize=8 ptrsize=8 doublesize=8 byteorder=12345678 doublekind=3 d_longlong=define longlongsize=8 d_longdbl=define longdblsize=16 longdblkind=3 ivtype='long' ivsize=8 nvtype='double' nvsize=8 Off_t='off_t' lseeksize=8 alignbytes=8 prototype=define Linker and Libraries: ld='cc' ldflags =' -fstack-protector-strong -L/usr/local/lib' libpth=/usr/local/lib /usr/lib /usr/lib64 /usr/local/lib64 libs=-lpthread -ldb -ldl -lm -lcrypt -lutil -lc perllibs=-lpthread -ldl -lm -lcrypt -lutil -lc libc=/lib/../lib64/libc.so.6 so=so useshrplib=false libperl=libperl.a gnulibc_version='2.34' Dynamic Linking: dlsrc=dl_dlopen.xs dlext=so d_dlsymun=undef ccdlflags='-Wl,-E' cccdlflags='-fPIC' lddlflags='-shared -O2 -L/usr/local/lib -fstack-protector-strong'
@INC for perl 5.41.3: /home/cpan/bin/perl/lib/site_perl/5.41.3/x86_64-linux /home/cpan/bin/perl/lib/site_perl/5.41.3 /home/cpan/bin/perl/lib/5.41.3/x86_64-linux /home/cpan/bin/perl/lib/5.41.3
Environment for perl 5.41.3: HOME=/home/cpan LANG=en_US.UTF-8 LANGUAGE (unset) LC_ALL=C LD_LIBRARY_PATH (unset) LOGDIR (unset) PATH=/home/cpan/bin/perl/bin:/home/cpan/bin:/usr/share/Modules/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin PERL_BADLANG (unset) SHELL=/bin/bash