This is a live mirror of the Perl 5 development currently hosted at
9 years agoMerge Shlomi's latest debugger refactoring work
Tony Cook [Wed, 2 Jan 2013 03:23:22 +0000 (14:23 +1100)]
Merge Shlomi's latest debugger refactoring work

9 years agobump $VERSION for lib/
Tony Cook [Wed, 2 Jan 2013 00:47:08 +0000 (11:47 +1100)]
bump $VERSION for lib/

There's been a release since this change was submitted.

9 years agoMissing test count.
Shlomi Fish [Mon, 24 Dec 2012 22:21:44 +0000 (00:21 +0200)]
Missing test count.


9 years agoFix perl -d's 'w $my_lexical_variable'.
Shlomi Fish [Sun, 9 Dec 2012 21:58:38 +0000 (23:58 +0200)]
Fix perl -d's 'w $my_lexical_variable'.

This was done by reverting parts of the offending commit from the
git bisecting and adding a test. Thanks to Kevin Dawson for the report.

9 years agoDocument HistSize and HistFile.
Shlomi Fish [Sat, 1 Dec 2012 20:46:49 +0000 (22:46 +0200)]
Document HistSize and HistFile.

Two undocumented perldebug options.

9 years agoStart refactoring "sub restart".
Shlomi Fish [Sun, 18 Nov 2012 11:33:27 +0000 (13:33 +0200)]
Start refactoring "sub restart".

9 years agoExtract _dump_trace_calc_saved_single_arg.
Shlomi Fish [Sun, 18 Nov 2012 10:14:12 +0000 (12:14 +0200)]
Extract _dump_trace_calc_saved_single_arg.

9 years agoExtract _dump_trace_calc_save_args.
Shlomi Fish [Sun, 18 Nov 2012 09:58:29 +0000 (11:58 +0200)]
Extract _dump_trace_calc_save_args.

9 years agoAvoid pre-declarations.
Shlomi Fish [Sun, 18 Nov 2012 09:47:10 +0000 (11:47 +0200)]
Avoid pre-declarations.

9 years agoFixed the test - it passes now.
Shlomi Fish [Fri, 16 Nov 2012 07:57:55 +0000 (09:57 +0200)]
Fixed the test - it passes now.

Thanks to Father Chrysostomos for fixing the bug in blead, I was now
able to fix the test in the debugger.

9 years agoAdd a testcase for the bug.
Shlomi Fish [Thu, 15 Nov 2012 15:54:26 +0000 (17:54 +0200)]
Add a testcase for the bug.

It is caused by $obj spontaneously becoming undef for no good reason -
seems like a bug in the perl interpreter (or elsewhere). This was
noticed by Father C here:

9 years agoExtract _cmd_L_handle_postponed_breakpoints.
Shlomi Fish [Thu, 15 Nov 2012 09:08:13 +0000 (11:08 +0200)]
Extract _cmd_L_handle_postponed_breakpoints.

9 years agoAdd empty lines and an explicit return.
Shlomi Fish [Wed, 14 Nov 2012 17:15:50 +0000 (19:15 +0200)]
Add empty lines and an explicit return.

9 years agoRemove a no-longer needed comment.
Shlomi Fish [Wed, 14 Nov 2012 11:45:23 +0000 (13:45 +0200)]
Remove a no-longer needed comment.

9 years agoExtract a subroutine.
Shlomi Fish [Wed, 14 Nov 2012 11:38:37 +0000 (13:38 +0200)]
Extract a subroutine.

9 years agoExtract some duplicate code into a closure.
Shlomi Fish [Wed, 14 Nov 2012 11:19:50 +0000 (13:19 +0200)]
Extract some duplicate code into a closure.

9 years agoSome refactoring.
Shlomi Fish [Wed, 14 Nov 2012 10:15:44 +0000 (12:15 +0200)]
Some refactoring.

9 years agoStart refactoring cmd_L.
Shlomi Fish [Wed, 14 Nov 2012 10:07:21 +0000 (12:07 +0200)]
Start refactoring cmd_L.

9 years agoRemove an unused parameter.
Shlomi Fish [Wed, 14 Nov 2012 09:43:57 +0000 (11:43 +0200)]
Remove an unused parameter.

9 years agoRemove a redundant line.
Shlomi Fish [Wed, 14 Nov 2012 09:34:13 +0000 (11:34 +0200)]
Remove a redundant line.

9 years agoRename vars to remove ambiguity.
Shlomi Fish [Wed, 14 Nov 2012 08:29:54 +0000 (10:29 +0200)]
Rename vars to remove ambiguity.

9 years ago[perl5db] Extract.
Shlomi Fish [Wed, 14 Nov 2012 08:15:37 +0000 (10:15 +0200)]
[perl5db] Extract.

9 years agoGot rid of passing $cmd to subs that don't use it.
Shlomi Fish [Wed, 14 Nov 2012 07:47:46 +0000 (09:47 +0200)]
Got rid of passing $cmd to subs that don't use it.

9 years agoExtract _cmd_l_calc_initial_end_and_i .
Shlomi Fish [Mon, 12 Nov 2012 21:40:10 +0000 (23:40 +0200)]
Extract _cmd_l_calc_initial_end_and_i .

9 years agoExtract a subroutine.
Shlomi Fish [Mon, 12 Nov 2012 21:11:09 +0000 (23:11 +0200)]
Extract a subroutine.

9 years agoMore refactoring.
Shlomi Fish [Sun, 11 Nov 2012 19:17:31 +0000 (21:17 +0200)]
More refactoring.

9 years agoExtract _cmd_l_range .
Shlomi Fish [Sun, 11 Nov 2012 18:27:16 +0000 (20:27 +0200)]
Extract _cmd_l_range .

9 years ago[perl5db] Extract some subroutines.
Shlomi Fish [Sun, 11 Nov 2012 17:56:00 +0000 (19:56 +0200)]
[perl5db] Extract some subroutines.

9 years agoExtract a subroutine.
Shlomi Fish [Sun, 11 Nov 2012 17:11:56 +0000 (19:11 +0200)]
Extract a subroutine.

9 years agoGot rid of a $1 reference.
Shlomi Fish [Sun, 11 Nov 2012 11:05:40 +0000 (13:05 +0200)]
Got rid of a $1 reference.

9 years agoAdd explicit returns.
Shlomi Fish [Sun, 11 Nov 2012 09:26:30 +0000 (11:26 +0200)]
Add explicit returns.

9 years ago[perl5db] Refactoring.
Shlomi Fish [Sat, 10 Nov 2012 11:48:02 +0000 (13:48 +0200)]
[perl5db] Refactoring.

9 years agoUpdate Term-ANSIColor to CPAN version 4.01
Chris 'BinGOs' Williams [Tue, 1 Jan 2013 10:14:13 +0000 (10:14 +0000)]
Update Term-ANSIColor to CPAN version 4.01


2012-12-31  Russ Allbery  <>

  * Version 4.01 released.

  * t/strict.t: During coverage checking, skip generic tests that
  don't run module code for a significant speed-up.

  * examples/generate-colors: Add POD documentation.
  * t/critic.t: Also check the examples directory.
  * t/pod.t: Likewise.
  * t/pod-spelling.t: Likewise.

  * t/aliases-env.t: Fix logic for skipping tests when Test::Warn is
  not installed.

2012-12-30  Russ Allbery  <>

  * Version 4.00 released.

  * LICENSE: New file summarizing copyright and license information.

  * examples/generate-colors: Add support for "basic" and "bright"
  test file types that test all the other supported attributes.
  * tests/README: Remove VT100 test files.  The license was unclear,
  and the new generate-colors example script does everything they do
  of significance for this package plus more.
  * tests/ansicolor: Likewise.
  * tests/vt100-torture: Likewise.

  * (PUSHCOLOR): Take an array like all the other
  constant functions and join all arguments together before
  manipulating it.
  * t/basic.t: Multiple new tests for various weird edge cases.

  is set to a true value.
  (color): Likewise.
  (colored): Likewise.
  * t/basic.t: Test that ANSI_COLORS_DISABLED must be true.

  * t/synopsis.t: New test for SYNOPSIS syntax.

  * Add COMPATIBILITY section to the documentation,
  collecting all information about when features were introduced and
  adding the version of Perl that they shipped with.  Add
  appropriate version numbers to the use statements in the SYNOPSIS.

  * Use coloralias to load aliases from the
  environment.  Improve commenting in the SYNOPSIS.  Document the
  new alias name restrictions.
  (coloralias): New function to set a color alias.  Enforce
  restrictions on the acceptable alias name.

  * t/aliases-env.t: Adjust warning test for new error message.
  * t/aliases-func.t: New test of coloralias.

2012-12-29  Stephen Thirlwall  <>
      Russ Allbery  <>

  * Add support for custom color names configured with
  the ANSI_COLORS_ALIASES environment variable as set during module
  (color): Support custom colors.
  (colorvalid): Likewise.
  * t/aliases-env.t: New test of custom colors from the environment.
  * t/basic.t: Delete ANSI_COLORS_ALIASES from the environment before
  module load to avoid any effects from the test runner's settings.
  * t/basic256.t: Likewise.
  * t/eval.t: Likewise.
  * t/stringify.t: Likewise.
  * t/taint.t: Likewise.

2012-12-28  Kurt Starsinic  <>
      Russ Allbery  <>

  * Add constants (with tag :constants256) and
  attributes for 256-color emulators.
  (uncolor): Support the three-part 256-color codes.
  * t/basic256.t: New test for 256-color support.
  * examples/generate-colors: New script to generate 256-color test
  or demonstration files.

2012-12-28  Russ Allbery  <>

  * t/basic.t: Test uncolor with \e[m and '' as only arguments.

  * $AUTOLOCAL takes precedence over $AUTORESET,
  reversing the previous behvior.  Document the precedence.
  * t/basic.t: Test for $AUTOLOCAL vs. $AUTORESET precedence.

  * t/taint.t: New check for proper untainting in AUTOLOAD.
  * Comment the untainting of $AUTOLOAD so that it
  isn't accidentally removed as apparently unnecessary.

  * t/strict.t: Ignore t/taint.t for coverage checking, since
  Test::Strict doesn't know how to invoke tests that require

  * t/strict.t: Add test suite coverage checking if running the test
  in maintainer mode.
  * (AUTOLOAD): Drop a redundant check on the result of
  eval so that 100% test coverage can be achieved.
  * t/basic.t: Remove taint checking, which is incompatible with
  coverage testing.  Add tests to achieve 100% coverage.
  * t/eval.t: Remove taint checking.
  * t/stringify.t: Likewise.

  * Document $Term::ANSIColor::AUTOLOCAL.

  generated constant subs.  Fixes a bug where the environment
  variable would be ignored if the constant were used before it was
  * t/basic.t: Test for proper ANSI_COLORS_DISABLED support in
  generated constant subs.

  * t/critic.t: New test that runs perlcritic (and perltidy) on all
  source files and checks for violations.
  * t/data/perlcriticrc: New file.
  * t/data/perltidyrc: New file.
  * Substantial reworking to improve coding style and
  layout.  Update to Perl 5.6 syntax.  Unconditionally load Carp for
  * Makefile.PL: Require Perl 5.6.  Remove conditionals for
  configuration that was not supported prior to Perl 5.6.
  * t/basic.t: Update coding style.
  * t/eval.t: Likewise.
  * t/stringify.t: Likewise.

  * t/minimum-version.t: New test for the minimum required version
  of Perl.

  * t/pod-coverage.t: New test for POD coverage.

  * Add use warnings.
  * Makefile.PL: Add use strict and use warnings.
  * t/strict.t: New test for strict and warnings in all code.

  * t/pod.t: Update coding style.
  * t/pod-spelling.t: Use Test::Spelling instead of including a
  less-tested version of the same code.  Update coding style.

9 years agoUpdate excluded files for Term-ANSIColor
Chris 'BinGOs' Williams [Tue, 1 Jan 2013 10:12:39 +0000 (10:12 +0000)]
Update excluded files for Term-ANSIColor

9 years agoregcomp.c: Fix upper loop limit
Karl Williamson [Tue, 1 Jan 2013 05:38:37 +0000 (22:38 -0700)]
regcomp.c: Fix upper loop limit

The upper limit test for this loop should be strictly less than, like
all other instances in the code for similar loops.  The class at
ANYOF_MAX is \v, which is not subject to locale rules, and this loop is
testing for which locale rule classes have been set.  Thus the loop
should not include \v.

Thanks to George Greer for spotting this.

9 years agoChange core calls of isALNUM() to isWORDCHAR()
Karl Williamson [Sun, 30 Dec 2012 03:51:00 +0000 (20:51 -0700)]
Change core calls of isALNUM() to isWORDCHAR()

The latter is more clearly named to indicate it includes the underscore.

9 years agoConvert uses of isALNUM_lazy_if to isWORDCHAR_lazy_if
Karl Williamson [Sun, 30 Dec 2012 03:35:50 +0000 (20:35 -0700)]
Convert uses of isALNUM_lazy_if to isWORDCHAR_lazy_if

This is to prevent confusion between the Posix alnum and the Perl \w.

9 years agoAdd isWORDCHAR_lazy_if() macro
Karl Williamson [Sun, 30 Dec 2012 03:33:41 +0000 (20:33 -0700)]
Add isWORDCHAR_lazy_if() macro

This is a synonym for the existing isALNUM_lazy_if(), which can be
confused with meaning the Posix alnum instead of the Perl \w.

9 years agoregcomp.c: White-space, comment only; no code changes
Karl Williamson [Mon, 31 Dec 2012 17:48:41 +0000 (10:48 -0700)]
regcomp.c: White-space, comment only; no code changes

This puts proper indentation, adds comments for code that was moved
around in the previous commit.

9 years agoregcomp.c: Refactor out a switch statement
Karl Williamson [Mon, 31 Dec 2012 17:21:37 +0000 (10:21 -0700)]
regcomp.c: Refactor out a switch statement

Previous work had collapsed most of the cases of this switch.  This
removes the entire switch, allowing more of the logic to be collapsed
into single code paths.  Most of this commit is just moving things
around; the heavy lifting has been done in previous commits.

9 years agoregcomp.c: Collapse switch cases
Karl Williamson [Mon, 31 Dec 2012 17:00:55 +0000 (10:00 -0700)]
regcomp.c: Collapse switch cases

These cases differ only in that the union is of the complement in one of
them.  There is a function that provides both possibilities.

9 years agoregcomp.c: Collapse two switch cases
Karl Williamson [Mon, 31 Dec 2012 16:45:06 +0000 (09:45 -0700)]
regcomp.c: Collapse two switch cases

These two cases differ only in that the union is of the complement in
one of them.  There is a function that provides both possibilities.

9 years agoregcomp.c: Remove redundant code
Karl Williamson [Mon, 31 Dec 2012 16:03:14 +0000 (09:03 -0700)]
regcomp.c: Remove redundant code

The statements just above the lines removed by this commit cause the
above-ASCII range to always match, not just under the conditions of the
removed code, so it is redundant.

9 years agoregcomp.c: Use data structure to remove special handling
Karl Williamson [Mon, 31 Dec 2012 15:45:10 +0000 (08:45 -0700)]
regcomp.c: Use data structure to remove special handling

[:digit:] matches nothing in the upper Latin1 range.  That means the
inversion list for the whole of Latin1 is the same as the one for the
ASCII range.  By copying the ASCII one into the Latin1's slot, we
eliminate the need for code to handle this case specially.

Future commits will remove the switch statement affected by this
commit entirely, and eliminating this special case becomes more
important given this direction.

9 years agolocale.t, pat_advanced.t: Remove TODOs
Karl Williamson [Mon, 31 Dec 2012 04:41:44 +0000 (21:41 -0700)]
locale.t, pat_advanced.t: Remove TODOs

The previous commit fixed these TODOs.

9 years agoregex: Add pseudo-Posix class: 'cased'
Karl Williamson [Mon, 31 Dec 2012 04:14:58 +0000 (21:14 -0700)]
regex: Add pseudo-Posix class: 'cased'

/[[:upper:]]/i and /[[:lower:]]/i should match the Unicode property
\p{Cased}. This commit introduces a pseudo-Posix class, internally named
'cased', to represent this.  This class isn't specifiable by the user,
except through using either /[[:upper:]]/i or /[[:lower:]]/i.  Debug
output will say ':cased:'.

The regex parsing either of :lower: or :upper: will change them into
:cased:, where already existing logic can handle this, just like any
other class.

This commit fixes the regression introduced in
3018b823898645e44b8c37c70ac5c6302b031381, and that these have never
worked under 'use locale'.  The next commit will un-TODO the tests for
these things.

9 years agohandy.h, regcomp.h, regexec.c: Sort initializers, switch()
Karl Williamson [Mon, 31 Dec 2012 03:55:49 +0000 (20:55 -0700)]
handy.h, regcomp.h, regexec.c: Sort initializers, switch()

Until recently, these were needed to be (or it made sense to be) in
numerical value of what the rhs of each #define evaluates to.  But now,
they are all initialized to something else, and the numerical value is
not even apparent.  Alphabetical order gives a logical ordering to help
a reader find things.

9 years agolocale.t: Add TODO tests
Karl Williamson [Mon, 31 Dec 2012 03:39:37 +0000 (20:39 -0700)]
locale.t: Add TODO tests

It turns out that Perl has always assumed that the Posix character
classes are closed under folding.  For example, if a character is in
[:alpha:], its fold will be in [:alpha:] as well.

This seems like a reasonable assumption except for two classes, where it
is almost certainly wrong.  If a character matches [:upper:], its fold
likely won't.  Same for [:lower:].  What this means is that a regex of
the form


has never properly matched the uppercased versions of the characters in
the target string.

This commit adds TODO tests for these.

9 years agolocale.t: Add tests for [:upper:], [:lower:]
Karl Williamson [Mon, 31 Dec 2012 03:28:20 +0000 (20:28 -0700)]
locale.t: Add tests for [:upper:], [:lower:]

If our uc() and lc() functions are working properly, and the locale is
properly set up, things that are uppercase and not lowercase should
match [:upper:], and vice-versa.  This adds tests for that.

9 years agolocale.t: Add extra debugging info
Karl Williamson [Mon, 31 Dec 2012 03:23:07 +0000 (20:23 -0700)]
locale.t: Add extra debugging info

The tryneoalpha() routine is given an extra parameter to print when
debugging is enabled.

9 years agolocale.t: Fix off by 1 error in debug output
Karl Williamson [Mon, 31 Dec 2012 03:19:35 +0000 (20:19 -0700)]
locale.t: Fix off by 1 error in debug output

The message about skipping tests was giving the wrong initial test
number for the range of those skipped.

9 years agolocale.t: Add capability to have TODO tests
Karl Williamson [Mon, 31 Dec 2012 03:15:09 +0000 (20:15 -0700)]
locale.t: Add capability to have TODO tests

This .t has hand-rolled tests.

9 years agore/pat_advanced.t: Add TODO test for recent regression
Karl Williamson [Sun, 30 Dec 2012 16:42:35 +0000 (09:42 -0700)]
re/pat_advanced.t: Add TODO test for recent regression

Commit 3018b823898645e44b8c37c70ac5c6302b031381 added a regression for
the Posix classes [:upper:] and [:lower:] when matching
case-insensitively.  If an above-Latin1 code point has been matched by
one of these classes at the time another regex is compiled which also
has the same class as the first one, and the second regex is /i, the
case-insensitivity is ignored.

9 years agoregcomp.c: Add comments
Karl Williamson [Fri, 28 Dec 2012 17:53:36 +0000 (10:53 -0700)]
regcomp.c: Add comments

9 years agoCorrect typo in test description.
James E Keenan [Mon, 31 Dec 2012 00:52:37 +0000 (19:52 -0500)]
Correct typo in test description.

9 years agofix g++ and nm
David Mitchell [Sun, 30 Dec 2012 12:56:20 +0000 (12:56 +0000)]
fix g++ and nm

Under some versions of linux, Configure wouldn't work with g++ due to
the forcing of using nm in hints/ This forcing is apparently no
longer necessary, so just remove it.

See this thread for more details: <>

9 years agoregcomp.c: Make sure optimizer handles node; Note for 3018b823
Karl Williamson [Fri, 28 Dec 2012 16:44:47 +0000 (09:44 -0700)]
regcomp.c: Make sure optimizer handles node; Note for 3018b823

The check that there isn't a simple regnode unknown to the optimizer
has been commented out since at least
653099ff2c52a6af02b3894d684593dfe31dcc17 in 1999.  This caused us some
slow down for a while in the 5.17 release, as I added a regnode and
didn't think about it needing to be added to the optimizer.  This commit
uncomments out the check, but only for debugging builds, so that a
production environment will run with missing optimization, but
developers will be notified of their error.

Also, in commit 3018b823898645e44b8c37c70ac5c6302b031381, I made an
error in the commit message; I'm adding it here so people digging will
find out the relevant information.  The message said that the new regex
ops were unknown to the optimizer.  I had forgotten that I had included
them in that commit, so that statement was wrong.

9 years agoregcomp.c: Use xor to save a test
Karl Williamson [Thu, 27 Dec 2012 22:26:01 +0000 (15:26 -0700)]
regcomp.c: Use xor to save a test

(Perhaps the C optimizer already figures this out.)

9 years agoregcomp.c: Free up ANYOF flag bit
Karl Williamson [Thu, 27 Dec 2012 21:35:46 +0000 (14:35 -0700)]
regcomp.c: Free up ANYOF flag bit

This frees up a flag bit for ANYOF regnodes.  The freed bit is currently
not needed for other uses; I decided to make the change now, while how
to do it was fresh in my mind.  There are fewer shifts and masks as a
result, as well.

This commit moves the information this bit contains to the otherwise
unused 'next_off' field in the synthetic start class.  This paradigm
could be used to pass information to the regex matching code for just
the synthetic start class, but the current bit is used just during

9 years agoAdd new regnode for synthetic start class
Karl Williamson [Thu, 27 Dec 2012 20:49:30 +0000 (13:49 -0700)]
Add new regnode for synthetic start class

This creates a regnode specifically for the synthetic start class, which
is a type of ANYOF node.  The flag bit previously used to denote this is
removed.  This paves the way for this bit to be freed up, but first the
other use of this bit must also be removed, which will be done in the
next commit.

There are now three ANYOF-type regnodes.  This one should be called only
in one place in regexec.c.  The other special one is ANYOF_WARN_SUPER.
A synthetic start class node should not do any warning, so there is no
issue of having something need to be both types.

9 years agoregcomp.c, regcomp.h: White-space, comment only
Karl Williamson [Thu, 27 Dec 2012 20:24:06 +0000 (13:24 -0700)]
regcomp.c, regcomp.h: White-space, comment only

No code changes

9 years agoregcomp.h: Split two ANYOF flag bits
Karl Williamson [Thu, 27 Dec 2012 20:15:46 +0000 (13:15 -0700)]
regcomp.h: Split two ANYOF flag bits

This essentially reverts 8b27d3db700fc2fce268e3d78e221a16ccaca2e8
and causes ANYOF nodes that are in locale but don't match things like \w
to have a smaller node size.

9 years agoFree up regex ANYOF bit.
Karl Williamson [Thu, 27 Dec 2012 17:59:13 +0000 (10:59 -0700)]
Free up regex ANYOF bit.

This uses a regnode type, of which we have many available, to free up
a bit in the ANYOF regnode flag field, of which we have none, and are
trying to have the same bit do double duty.  This will enable us to
remove some of that double duty in the next commit.

9 years agoregcomp.c: Remove unnecessary flag setting
Karl Williamson [Thu, 27 Dec 2012 19:15:56 +0000 (12:15 -0700)]
regcomp.c: Remove unnecessary flag setting

The function cl_anything() sets things up so that the synthetic start
class parameter will match any character.  But this flag doesn't
contribute to that, as it sets things to match under certain conditions
only, and the characters it matches already match by the other actions
of the routine (the ANYOF_BITMAP_SETALL just above).

9 years agoregcomp.c: Clean up ANYOF_CLASS handling.
Karl Williamson [Thu, 27 Dec 2012 19:34:41 +0000 (12:34 -0700)]
regcomp.c: Clean up ANYOF_CLASS handling.

The ANYOF_CLASS flag is used in ANYOF nodes (for [bracketed] and the
synthetic start class) only when matching something like \w, [:punct:]
etc., under /l (locale).  It should not be set unless /l is specified.
However, it was always getting set for the synthetic start class.  This
commit fixes that.  The previous code was masking errors in which it was
being tested for unnecessarily, and for much of the 5.17 series, the
synthetic start class was always set to test for locale, which was a
waste of cpu when no locale was specified.

9 years agoregcomp.c: Add #undef
Karl Williamson [Wed, 26 Dec 2012 17:33:13 +0000 (10:33 -0700)]
regcomp.c: Add #undef

The #defines in the first part of the file are #undef'd to try to keep
anything from inadvertently leaking into the 2nd part; this one was

9 years agoregcomp.c: typo in comment
Karl Williamson [Wed, 26 Dec 2012 17:32:43 +0000 (10:32 -0700)]
regcomp.c: typo in comment

9 years agoregcomp.c: Handle edge case in inversion list max
Karl Williamson [Wed, 26 Dec 2012 17:14:34 +0000 (10:14 -0700)]
regcomp.c: Handle edge case in inversion list max

The function _invlist_max() cannot currently be called on an inversion
list that was compiled in (via a C language array), because this edge
case is not considered.  I don't think current code ever does call this
function on this case, but that could inadvertently easily change.

9 years agoregcomp.c: Reword comment
Karl Williamson [Tue, 25 Dec 2012 19:21:53 +0000 (12:21 -0700)]
regcomp.c: Reword comment

To more accurately reflect newer code

9 years agoregcomp.c: Don't iterate while changing an inversion list
Karl Williamson [Thu, 27 Dec 2012 17:25:48 +0000 (10:25 -0700)]
regcomp.c: Don't iterate while changing an inversion list

This adds functions to prevent accidental (or deliberate) iteration over
an inversion list while it is being modified.  This is to catch
development errors, and in production builds, the asserts() are likely

9 years agoregen/ Add sanity test for entries
Karl Williamson [Thu, 27 Dec 2012 16:55:54 +0000 (09:55 -0700)]
regen/ Add sanity test for entries

A void returning function should not be required to have its return
value tested.

9 years agoUpdate Scalar-List-Utils to CPAN version 1.27
Chris 'BinGOs' Williams [Thu, 27 Dec 2012 21:49:23 +0000 (21:49 +0000)]
Update Scalar-List-Utils to CPAN version 1.27


  1.26_001 -- Sun Dec 23 15:58

    * Fix multicall refcount bug RT#80646

9 years agoUpdate HTTP-Tiny to CPAN version 0.025
Chris 'BinGOs' Williams [Thu, 27 Dec 2012 21:43:42 +0000 (21:43 +0000)]
Update HTTP-Tiny to CPAN version 0.025


  0.025     2012-12-26 12:09:43 America/New_York


    - Agent string appends default if it ends in a space, just like LWP
      [Chris Weyl]

9 years agoAdd regcomp.c warning checks to t/porting/diag.t.
Matthew Horsfall (alh) [Wed, 26 Dec 2012 19:54:52 +0000 (14:54 -0500)]
Add regcomp.c warning checks to t/porting/diag.t.

 * Support regcomp.c ckWARN and vWARN macros
 * Update pod/perldiag.pod for fixes discovered with new checks
 * Allow t/porting/diag.t to match printfs with flags more liberally

9 years agoPerl_instr() implement with libc equivalent.
Karl Williamson [Mon, 24 Dec 2012 15:56:22 +0000 (08:56 -0700)]
Perl_instr() implement with libc equivalent.

C89 libc contains the strstr() function that does the same thing as
instr().  Convert to use it under the assumption that it is faster than
our code, and is less for us to maintain.  Because early versions of
Lunix libc had a bug when the 'little' argument was NULL (fixed in late
1994), check for that explicitly.  If we were willing to ignore issues
with such old libc versions, or if we had a Configure probe that tested
for the bug, we could replace the macro instr() completely with a call
to strstr().

The memmem() GNU extension does the same thing as Perl_ninstr().  It
however has bugs in much later libc versions.  A Configure probe could
be written to see if it is usable.

9 years agoFix comment references to removed rexex ops
Karl Williamson [Wed, 26 Dec 2012 16:32:58 +0000 (09:32 -0700)]
Fix comment references to removed rexex ops

Commit 3018b823898645e44b8c37c70ac5c6302b031381 removed the regular
expression operations (regnodes) that these comments refer to, replacing
them with different ones.  Update the comments to be accurate

9 years agoregcomp.c: Properly indent
Karl Williamson [Tue, 25 Dec 2012 16:04:05 +0000 (09:04 -0700)]
regcomp.c: Properly indent

9 years agopat_advanced.t: Add tests
Karl Williamson [Tue, 25 Dec 2012 15:55:14 +0000 (08:55 -0700)]
pat_advanced.t: Add tests

I almost broke this, so adding a precautionary test.

9 years agoRevert "porting/podcheck corrections."
David Mitchell [Wed, 26 Dec 2012 13:53:23 +0000 (13:53 +0000)]
Revert "porting/podcheck corrections."

This reverts commit f6a6501216dee24e251d4482bd3a1f6daf4ac0da.

The fix seems wrong and is causing podcheck.t test failures, and (for my
system at least), reverting it removes those errors and doesn't create new
errors. Whatever was originally causing podcheck errors needs to be fixed,
rather than trying to mask it.

9 years agoporting/podcheck corrections.
James E Keenan [Wed, 26 Dec 2012 03:55:17 +0000 (22:55 -0500)]
porting/podcheck corrections.

9 years agoAdd another address for Renee Baecker.
James E Keenan [Wed, 26 Dec 2012 03:07:21 +0000 (22:07 -0500)]
Add another address for Renee Baecker.

Keep t/porting/authors.t happy.

9 years agoext/Hash-Util/lib/Hash/ Bump $VERSION to reflect documentation
James E Keenan [Wed, 26 Dec 2012 02:39:39 +0000 (21:39 -0500)]
ext/Hash-Util/lib/Hash/ Bump $VERSION to reflect documentation

Revert one typographical correction to satisfy t/porting/podcheck.t

9 years agoAdd new functions of Hash::Util in documentation.
reneeb [Tue, 25 Dec 2012 23:06:02 +0000 (00:06 +0100)]
Add new functions of Hash::Util in documentation.

Add call of 'hash_value' to synopsis and fix typo.
Typographical and grammatical touch-ups (by committer).

9 years agofix utf8ness in ${"string"}
David Mitchell [Tue, 25 Dec 2012 21:44:58 +0000 (21:44 +0000)]
fix utf8ness in ${"string"}

Commit 28123549 introduced some consistency checks which started warning
against code like:

    $c = chr 163;
    $x = $$c;

This was caused by a symbol table lookup of a value which isn't utf8
encoded, but which was being treated as utf8 encoded.

9 years agoEliminate PL_reg_flags
David Mitchell [Tue, 25 Dec 2012 21:03:27 +0000 (21:03 +0000)]
Eliminate PL_reg_flags

The previous 3 commits have removed any usage of the 3 flags bits from
this var; remove the (now unused) varable (which is actually #deffed to

This change brought to you by the Campaign to Remove Global State from the
Regex Engine(tm).

9 years agoEliminate RF_tainted flag from PL_reg_flags
David Mitchell [Tue, 25 Dec 2012 20:51:50 +0000 (20:51 +0000)]
Eliminate RF_tainted flag from PL_reg_flags

This global flag is cleared at the start of execution, and then set if
any locale-based nodes are executed. At the end of execution, the
RXf_TAINTED_SEEN flag on the regex is set/cleared based on RF_tainted.

We eliminate RF_tainted by simply directly setting RXf_TAINTED_SEEN
each time a taintable node is executed.

This is the final step before eliminating PL_reg_flags.

9 years agoeliminate RF_warned flag from PL_reg_flags
David Mitchell [Tue, 25 Dec 2012 18:24:50 +0000 (18:24 +0000)]
eliminate RF_warned flag from PL_reg_flags

This global flag indicates whether the currently executing regex has
issued a recursion limit warning yet.
Replace it with a boolean var local to the regmatch_info struct.

This is a second step to eliminating PL_reg_flags.

9 years agoeliminate RF_utf8 flag from PL_reg_flags
David Mitchell [Tue, 25 Dec 2012 18:09:32 +0000 (18:09 +0000)]
eliminate RF_utf8 flag from PL_reg_flags

This global flag indicates whether the currently executing regex is utf8.
Replace it with a boolean var local to to the matching function, and pass
it around via function args, or as a member of the regmatch_info struct.

This is a first step to eliminating PL_reg_flags.

9 years ago[perl #116148] Pattern utf8ness sticks around
David Mitchell [Tue, 25 Dec 2012 15:39:25 +0000 (15:39 +0000)]
[perl #116148] Pattern utf8ness sticks around

Perl_re_intuit_start would set, but never unset, the RF_utf8 flag in
PL_reg_flags. This meant that two successive patterns, the first utf8 and
the sdeconfd not, that are processed using only intuit, will get the flag
wrong on the second one. The fix is trivial.

9 years agoperlapi: Fix misstatement
Karl Williamson [Mon, 24 Dec 2012 15:39:58 +0000 (08:39 -0700)]
perlapi: Fix misstatement

According to the comments for Perl_sv_setuv(), for performance reasons,
a UV that fits in an IV is stored as an IV.

9 years agoperlapi: Fix typos
Karl Williamson [Mon, 24 Dec 2012 14:52:50 +0000 (07:52 -0700)]
perlapi: Fix typos

9 years agoRemove register keywork from randfunc tests in Configure
H.Merijn Brand [Mon, 24 Dec 2012 15:08:40 +0000 (16:08 +0100)]
Remove register keywork from randfunc tests in Configure

9 years agoregcomp.c: Add comment, Note for 3018b8238
Karl Williamson [Mon, 24 Dec 2012 02:44:03 +0000 (19:44 -0700)]
regcomp.c: Add comment, Note for 3018b8238

This adds a comment for this code, which I mistakenly included in commit
3018b823898645e44b8c37c70ac5c6302b031381, and should have been in its
own commit.  The code optimizes something that has a quantifier of zero
into a NOTHING node.

9 years agoregexec.c: Comments, white-space; no code changes
Karl Williamson [Mon, 24 Dec 2012 02:09:28 +0000 (19:09 -0700)]
regexec.c: Comments, white-space; no code changes

9 years agoutf8.h: Make sure char* is cast to U8* for unsigned comparison
Karl Williamson [Mon, 24 Dec 2012 02:04:30 +0000 (19:04 -0700)]
utf8.h: Make sure char* is cast to U8* for unsigned comparison

If a char* is passed prior to this commit, an above-ASCII char could
have been considered negative instead of positive, and thus screwed up
these tests

9 years agoutf8.h: Parenthesize macro parameter
Karl Williamson [Mon, 24 Dec 2012 02:01:34 +0000 (19:01 -0700)]
utf8.h: Parenthesize macro parameter

This apparently hasn't caused us problems, but all uses of a macro
paramenter should be parenthesized to prevent surprises.

9 years agoperlapi: Clarify isSPACE(), document isPSXSPC()
Karl Williamson [Mon, 24 Dec 2012 01:46:15 +0000 (18:46 -0700)]
perlapi: Clarify isSPACE(), document isPSXSPC()

9 years agouninline panic branch from POPSTACK
Daniel Dragan [Sun, 16 Dec 2012 22:26:49 +0000 (17:26 -0500)]
uninline panic branch from POPSTACK

This commit saves machine instructions by preventing inlining, and keeps
the error handling code for an extremely rare panic out of hot code. This
should make the interp smaller and faster.

Perl_error_log is a macro that has a very large expansion on threaded
perls, 4 branches and possibly a call to Perl_PerlIO_stderr. POPSTACK
18 times, by asm, on my non DEBUGGING threaded Win32 32 bit Perl 5.17
-O1 compiled with VC 2003. POPSTACK is also used in some core XS modules,
for example List::Util and PerlIO::encoding. The .text section of
perl517.dll dropped from 0xc05ff bytes of x86 instructions to 0xc00ff
after applying this for me.

Perl_croak_popstack was made contextless to save a push/move instruction
at each caller (less instructions in the instruction cache) and for more
opportunity for the compiler to optimize. Since Perl_croak_popstack is a
noreturn, some compilers may optimize it to just a conditional jump
instruction. VC 2003 32 bit did this inside perl517.dll and from XS
modules using POPSTACK.  Perl_croak_popstack measures at 0x48 bytes of
instructions under -O1 for me, so previously, those 0x48 minus the
dTHX overhead would have been sitting in the caller because of macro

9 years agoperlhack: in-line functions need extra care
Karl Williamson [Sat, 12 Nov 2011 20:36:53 +0000 (13:36 -0700)]
perlhack: in-line functions need extra care

9 years agohandy.h: Add full complement of isIDCONT() macros
Karl Williamson [Sun, 23 Dec 2012 20:49:02 +0000 (13:49 -0700)]
handy.h: Add full complement of isIDCONT() macros

This also changes isIDCONT_utf8() to use the Perl definition, which
excludes any \W characters (the Unicode definition includes a few of
these).  Tests are also added.  These macros remain undocumented for