| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
| |
The R modifier to the stack debugging switch -Ds already
indicates if an SV's refcount is > 1 or SvTEMP is set (T), or the
SV is on the temps stack without SvTEMP set (t), e.g.:
=> IV(101), <2>IV(102), <T>IV(103) <3t>IV(104)
With this commit, it displays SVs with the SvPADTMP flag set as <P>,
e.g.
=> <P>IV(101), <2P>IV(102), <PT>IV(103)
|
|
|
|
| |
Updated to build without warnings on gcc-12.
|
| |
|
|
|
|
|
|
|
|
| |
An enum is supposed to be an int. STRLEN may be too large for that. (I
suspect the cast was inadvertently left in converting from an earlier
implementation that was never released.)
Spotted by H. Merijn Brand.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Silences the following warning:
In file included from HiRes.xs:23:
./ppport.h:14832:1: warning: unused function 'DPPP_my_ck_warner' [-Wunused-function]
DPPP_(my_ck_warner)(pTHX_ U32 err, const char *pat, ...)
^
./ppport.h:11568:21: note: expanded from macro 'DPPP_'
#define DPPP_(name) DPPP_CAT2(DPPP_NAMESPACE, name)
^
./ppport.h:11567:24: note: expanded from macro 'DPPP_CAT2'
#define DPPP_CAT2(x,y) CAT2(x,y)
^
../../config.h:1387:19: note: expanded from macro 'CAT2'
#define CAT2(a,b) PeRl_CaTiFy(a,b)
^
../../config.h:1385:27: note: expanded from macro 'PeRl_CaTiFy'
#define PeRl_CaTiFy(a, b) a ## b
^
<scratch space>:34:1: note: expanded from here
DPPP_my_ck_warner
^
1 warning generated.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Silence build warning with 32 bit build under clang. Also bump
version.
APItest.xs:7614:24: warning: format specifies type 'unsigned int'
but the argument has type 'U32' (aka 'unsigned long') [-Wformat]
i, hash32, vectors_32[i]);
^~~~~~
../../fakesdio.h:64:50: note: expanded from macro 'printf'
#define printf(fmt,args...) PerlIO_stdoutf(fmt,##args)
~~~ ^~~~
APItest.xs:7614:32: warning: format specifies type 'unsigned int'
but the argument has type 'U32' (aka 'unsigned long') [-Wformat]
i, hash32, vectors_32[i]);
^~~~~~~~~~~~~
../../fakesdio.h:64:50: note: expanded from macro 'printf'
#define printf(fmt,args...) PerlIO_stdoutf(fmt,##args)
~~~ ^~~~
APItest.xs:7835:24: warning: format specifies type 'unsigned int'
but the argument has type 'U32' (aka 'unsigned long') [-Wformat]
i, hash32, vectors_32[i]);
^~~~~~
../../fakesdio.h:64:50: note: expanded from macro 'printf'
#define printf(fmt,args...) PerlIO_stdoutf(fmt,##args)
~~~ ^~~~
APItest.xs:7835:32: warning: format specifies type 'unsigned int'
but the argument has type 'U32' (aka 'unsigned long') [-Wformat]
i, hash32, vectors_32[i]);
^~~~~~~~~~~~~
../../fakesdio.h:64:50: note: expanded from macro 'printf'
#define printf(fmt,args...) PerlIO_stdoutf(fmt,##args)
~~~ ^~~~
4 warnings generated.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
And by removing it we silence the following build warning:
regcomp.c:2285:28: warning: format specifies type 'int' but the argument has type 'I32' (aka 'long') [-Wformat]
parno, RExC_parno_to_logical[parno], RExC_parno_to_logical_next[parno]);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
./regcomp_internal.h:212:37: note: expanded from macro 'RExC_parno_to_logical'
#define RExC_parno_to_logical (pRExC_state->parno_to_logical)
^
regcomp.c:2285:58: warning: format specifies type 'int' but the argument has type 'I32' (aka 'long') [-Wformat]
parno, RExC_parno_to_logical[parno], RExC_parno_to_logical_next[parno]);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./regcomp_internal.h:213:37: note: expanded from macro 'RExC_parno_to_logical_next'
#define RExC_parno_to_logical_next (pRExC_state->parno_to_logical_next)
^
2 warnings generated.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Silence the following warnings:
dump.c:2688:25: warning: format specifies type 'long long'
but the argument has type 'ssize_t' (aka 'int') [-Wformat]
r->offs[n].start, r->offs[n].end,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./embed.h:831:72: note: expanded from macro 'sv_catpvf'
# define sv_catpvf(a,...) Perl_sv_catpvf(aTHX_ a,__VA_ARGS__)
^~~~~~~~~~~
dump.c:2688:43: warning: format specifies type 'long long'
but the argument has type 'ssize_t' (aka 'int') [-Wformat]
r->offs[n].start, r->offs[n].end,
~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~
./embed.h:831:72: note: expanded from macro 'sv_catpvf'
# define sv_catpvf(a,...) Perl_sv_catpvf(aTHX_ a,__VA_ARGS__)
^~~~~~~~~~~
2 warnings generated.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Use SSize_t for iterator as it matches the type being compared against.
Silences the following warning:
class.c:555:26: warning: comparison of integers of different signs:
'U32' (aka 'unsigned long') and 'long' [-Wsign-compare]
for(U32 i = 0; i <= AvFILL(superaux->xhv_class_adjust_blocks); i++)
~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
class.c:699:40: warning: comparison of integers of different signs:
'U32' (aka 'unsigned long') and 'ssize_t' (aka 'int') [-Wsign-compare]
for(U32 i = 0; fieldnames && i <= PadnamelistMAX(fieldnames); i++) {
~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~
2 warnings generated.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Silence warning about PL_parser. As far as I can tell we do not use it.
In file included from ../../perl.h:28,
from Storable.xs:16:
ppport.h:11564:26: warning: ‘DPPP_dummy_PL_parser’ defined but not used [-Wunused-variable]
11564 | # define DPPP_NAMESPACE DPPP_
| ^~~~~
../../config.h:1385:27: note: in definition of macro ‘PeRl_CaTiFy’
1385 | #define PeRl_CaTiFy(a, b) a ## b
| ^
ppport.h:11567:24: note: in expansion of macro ‘CAT2’
11567 | #define DPPP_CAT2(x,y) CAT2(x,y)
| ^~~~
ppport.h:11568:21: note: in expansion of macro ‘DPPP_CAT2’
11568 | #define DPPP_(name) DPPP_CAT2(DPPP_NAMESPACE, name)
| ^~~~~~~~~
ppport.h:11568:31: note: in expansion of macro ‘DPPP_NAMESPACE’
11568 | #define DPPP_(name) DPPP_CAT2(DPPP_NAMESPACE, name)
| ^~~~~~~~~~~~~~
ppport.h:12222:18: note: in expansion of macro ‘DPPP_’
12222 | static yy_parser DPPP_(dummy_PL_parser);
| ^~~~~
|
|
|
|
| |
Otherwise its symbols are missing at link time.
|
|
|
|
|
| |
Change is actually made in regen/feature.pl, then we run 'perl
regen.pl'.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Make the 'experimental::smartmatch' warning obsolete, and use
'deprecated' instead.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We have been using secrets to store boolean variables. This results
in our CI output being annoyingly corrupted by the security eliding.
Github now supports "variables" as well as secrets, which are not
elided in CI output. So switch our test framework controls to use
the variable. Note the EXTENDED_TESTING variable was switched from
to DO_EXTENDED_TESTING so that we can have both the EXTENDED_TESTING
/secret/ and the new DO_EXTENDED_TESTING variable available at the
same time as this commit is processed.
Fixes #20843
|
|
|
|
|
|
|
|
| |
If time() or times() is broken then Benchmark can infinite loop.
This adds a sanity check that will die early if it appears that
either are broken.
This fixes the infinite loop part of GH Issue #20839
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Multiple forms of syntax can be used to obtain a package name from
`caller`, which emits this as its first return value, and assign
that name to a lexical scalar.
The following each achieve the same result, but with varying efficiency:
* `sub callme { my $package = caller(2); ...}`
* `sub callme { my ($package) = caller(2); ...}`
* `sub callme { my $package = (caller(2))[0]; ...}`
In the first example, `pp_caller` determines only the package name
and pushes it to the stack. In the other two examples, the other 10 of
`caller`'s return values are calculated and pushed onto the stack,
before being discarded.
This commit changes non-CPAN-first instances of the latter two forms
in core to the first form.
Note: There is a special exception to the equivalence described above,
when caller is use in list context within the DB package. Such a
usage instance in regen/warnings.pl therefore remains unchanged.
|
|
|
|
|
|
|
| |
Its the usual issue, that an old PR that bumps a modules
version may look fine in CI as it does not look like a conflict
as another patch has bumped the version to the same number,
but cmp_version.t notices and complains
|
|
|
|
| |
By always including `ppport.h`, this simplifies both XS code and tooling around it.
|
|
|
|
|
| |
caller in scalar context does much less work so not only is this easier to read, it should be a tad faster.
And for good measure, switch to the modern version declaration while bumping.
|
|
|
|
|
|
|
|
| |
This follows dab4006c92d70a54e7909d0e670b71bfd3fb8221
and ends the misspelling distribution-wide
remained in two Windows-related files
|
|
|
|
| |
Be a bit clearer that this is used for testing perl itself.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
- add additions to perldiag
- documentation section
- remove placeholders
- finalize Acknowledgements
- fix typos
- linkify issue/PR references
|
| |
|
| |
|
|
|
|
| |
Changelog updated.
|
|
|
|
| |
a683fa5b7e816ae5c10d246c9a0b1f3ea743274b
|
|
|
|
| |
71d63d0dc1fcf23d28f488655c105c0dfefbd254
|
| |
|
|
|
|
| |
It used to be U16_MAX and it is now I32_MAX.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Prior to this patch SSCHECK() took a "needs" parameter, but did not
actually guarantee that the stack would be sufficiently large to
accomodate that many elements after the call. This was quite misleading.
Especially as SSGROW() would not do geometric preallocation, but
SSCHECK() would, so much of the time SSCHECK() would appear to be a
better choice, but not always.
This patch makes it so SSCHECK() is an alias for SSGROW(), and it makes
it so that SSGROW() also geometrically overallocates. The underlying
function that used to implement SSCHECK() savestack_grow() now calls the
savestack_grow_cnt() which has always implemented SSGROW(). Anything
in the internals that used to call SSCHECK() now calls SSGROW() instead.
At the same time the preallocation has been made a little bit more
aggressive, ensuring that we always allocate at least SS_MAXPUSH
elements on top of what was requested as part of the "known" size of the
stack, and additional SS_MAXPUSH elements which are not part of the
"known" size of the stack. This "hidden extra" is used to simply some of
the other macros which are used a lot internally. (I have beefed up the
comment explaining this as well.)
This fixes GH Issue #20826
|
|
|
|
|
|
| |
We have a bug where we can overflow the save-stack. This tests for it
in a TODO test. The next patch will fix it. Note the test will only fail
in debugging as it requires the assert() to be compiled in.
|
|
|
|
|
|
|
|
| |
We have fixed bugs related to $SIG{__DIE__} being inconsistently
triggered during eval, and we have fixed bugs with compilation
inconsistently stopping after 10 errors. This patch also includes a
micro-tweak to perl.h to allow the threshold to be sanely overriden in
Configure.
|
|
|
|
|
|
|
|
|
|
|
| |
Currently we only check the error count when we report an error via
yyerror(), even though we say we will stop processing after 10 errors.
Errors reported directly to qerror() bypass the check.
This fixes this so that we check the number of errors reported in
qerror() itself. We also change qerror() so that qerror(NULL) triggers
the exception, this way we can move the logic out of yyerror and into
qerror().
|
|
|
|
|
|
| |
I did not fully understand the use of yyquit() when I implemented
the SYNTAX_ERROR related stuff. It is not needed, and switching to this
makes eval compile error messages more consistent.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently whether the __DIE__ signal handler triggers during compilation
of an eval string depends on the selection of the errors it contains.
Certain types of compilation error are considered "deferred errors" and
will not terminate compilation immediately, for instance undeclared
variables do not confuse the compiler so they do not trigger immediate
termination, and we will report them without limit provided they are the
only errors encountered. Whether a given error terminates compilation or
not or uses the error count to decide to do so seems to be somewhat
random, and it is quite possible that compilation can complete, with
errors, without ever "throwing" the exception so it can be passed to the
__DIE__ handler.
This patch ensures that when the eval has failed due to errors the
$SIG{__DIE__} handler is invoked before the eval completes.
|