summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* [perl #78580] Stop a simple *glob from calling get-magicFather Chrysostomos2010-10-312-2/+15
| | | | | | | | This also happens to apply to *{ $::{glob} }, but not to *{\*glob} or *{$thing = *glob}. In other words, it’s only when the operand is a real glob, and not a reference or a SVt_FAKE glob.
* Update parent to CPAN version 0.224Chris 'BinGOs' Williams2010-11-013-7/+11
| | | | | | | | | | | [DELTA] 0.224 20101031 . Change assignment @ISA = (@ISA, 'new::class') to use push @ISA, 'new::class' This should make class creation faster from 5.10 onwards and reverts a change made in 2.14. If this is critically slow for you and you can't upgrade your version of Perl, use the old way.
* perlunicode.pod: Add detail on utf8/locale conflictsKarl Williamson2010-10-311-2/+7
|
* regcomp.h: Remove unused #defineKarl Williamson2010-10-311-3/+0
| | | | | | | | | | | ANYOF_RUNTIME() is no longer used, so can be removed. I had long tried to figure out what the purpose of this was, and discovered it really had none. I think it must have had something to do with locales at one time. But locales don't do well with utf8, and I don't know how to make it better. In any event this wasn't actually accomplishing anything.
* reginclass: Remove redundant testKarl Williamson2010-10-311-6/+3
| | | | | | | | | | | The previous re-ordering of this function makes it clear that this test doesn't do anything. It is testing the charclass bitmap, but that was already done in the re-ordered block from a previous commit, so if it didn't succeed there, it won't succeed here. In fact, trying to understand why this code was here was what led me to figure out that it wasn't, and that things could be sped up by doing the reordering.
* reginclass: Reorder fastest firstKarl Williamson2010-10-311-51/+55
| | | | | | | | | | | | | | | | | | | | | This patch simply moves the block of code that does the bitmap tests in front of the block of code that deals with potential things not in the bit map. The reason to do this is that it is faster to find things in the bitmap, than to have to create a utf8 swash. The patch also adds some comments, and the first block doesn't have to test if there has been a match, and the second block does, so if statements for those two blocks are adjusted accordingly. The proof that this doesn't break anything stems from the fact that the routine never stops early. If there wasn't a match in the first block of code, it would execute the second block. Thus swapping the order doesn't affect the outcome. The side effects of the first block are reading in the swash. These side effects won't happen if it no longer gets executed, because the other block matched. And thus an error could be introduced if there were coding errors elsewhere that didn't initialize the swash before using it. But that doesn't appear to be the case, as all tests pass.
* reginclass: Remove unnecessary testKarl Williamson2010-10-311-1/+1
| | | | | The previous changes have made it clear that this test never was useful, so remove it.
* reginclass: Make explicit the length assumptionsKarl Williamson2010-10-311-7/+9
| | | | | | reginclass assumes that can match always at least one character. Make that explicit, and now that we have that length always saved, don't recalculate it.
* reginclass: Rename variable for clarityKarl Williamson2010-10-311-4/+4
| | | | Several other variables in the routine have the previous name
* regcomp.h: Clean up some commentsKarl Williamson2010-10-311-10/+10
|
* ANYOF_LARGE is now the same as ANYOF_CLASSKarl Williamson2010-10-311-4/+2
| | | | | These two #defines now mean the same thing. Free up bit used by ANYOF_LARGE
* regexec.c: reorder statements for speedKarl Williamson2010-10-311-4/+4
| | | | | The call to reginclass is guaranteed by constness to not change locinput, so if going to fail don't waste time calling it.
* regexec.c: Add clarifying commentKarl Williamson2010-10-311-1/+5
|
* reginclass: add some consts to prototypeKarl Williamson2010-10-313-4/+4
|
* regexec.c: Remove redundant line.Karl Williamson2010-10-311-1/+1
| | | | | Now that reginclass is guaranteed to return the match length upon success, the caller need not do it again.
* reginclass: Return matched length even if not utf8Karl Williamson2010-10-311-10/+18
| | | | This also allows for less special case testing
* reginclass: Change variable name for clarity.Karl Williamson2010-10-311-7/+9
|
* regexec.c: Document existing reginclass behaviorKarl Williamson2010-10-311-1/+7
|
* perldelta up to 7cb18e1b02Father Chrysostomos2010-10-311-7/+56
|
* Merge Storable::{is_storing,is_retrieving} using ALIAS.Nicholas Clark2010-10-311-7/+7
|
* Storable::{last_op_in_netorder,is_storing,is_retrieving} are all boolean.Nicholas Clark2010-10-311-6/+6
| | | | | | Hence they can have return type bool, which allows xsubpp to generate slightly simpler (and smaller) code, and at run time avoids using a temporary for the return value.
* Merge Storable::{,net_}pstore and Storable::{,net_}mstore using ALIAS.Nicholas Clark2010-10-312-80/+27
| | | | | | | | Remove the static functions {,net}[mp]store(), which were trivial wrappers around do_store(). Instead call do_store() directly, using the ALIAS index as the flag. Less code. On this platform, this reduces the object code by over 1K. (Over 1%)
* Add l1_char_class_tab.h to Make dependenciesKarl Williamson2010-10-311-1/+1
|
* regcomp.c: No longer need _C_C_T_ and variant macroKarl Williamson2010-10-311-42/+17
| | | | | Now, all calls have been converted to the more general case; can remove the old one, and rename the new one to have the same name as the old one
* [:posix:] now works under /uKarl Williamson2010-10-314-32/+44
| | | | | | | This patch is part of fixing the Unicode bug. The /u regex modifier now applies to posix character classes. This resolves [perl #18281]. The Todo tests in reg_posicc.t have all been made not todo.
* l1_char_class_tab.h: Wrong for ALNUMCKarl Williamson2010-10-312-66/+66
| | | | | The generated table was wrong in the Latin1 range for characters with the ALNUMC property
* Nits in re podsKarl Williamson2010-10-312-3/+4
|
* DOCs: Clarify that \w matches marks and \PcKarl Williamson2010-10-315-10/+20
| | | | | | The previous documentation really didn't specify what \w is. It matches the underscore, but also all other connector punctuation, plus any marks, such as diacritical accents that occur within a word.
* Add consistent synonyms for \p{PosxFOO}Karl Williamson2010-10-313-71/+100
| | | | | | | | | | This patch adds a set of synonyms \p{XPosixFOO} for the full extended Unicode version of \p{PosixFOO}, so only one rule need be remembered. Similarly, \p{XPerlSpace} is added to preserve the rule for the one similar class that doesn't have Posix in its name. Prior to this patch there was no exact equivalent to \p{PosixPunct} extended beyond ASCII.
* Revert "Add consistent synonyms for \p{PosxFOO}"Father Chrysostomos2010-10-312-61/+29
| | | | This reverts commit d5944336d74c819152158dabfd806d49ad0ecb21.
* Merge the XS implementation of all B::MG accessors using ALIAS.Nicholas Clark2010-10-311-80/+59
| | | | On this platform, this reduces the object code size by over 5K.
* Bump Safe's version to 2.29Rafael Garcia-Suarez2010-10-313-3/+6
|
* Add &version::vxs::VCMP to Safe's default shareRafael Garcia-Suarez2010-10-311-0/+1
| | | | This is to accomodate this new function in version.pm 0.85.
* Add consistent synonyms for \p{PosxFOO}Karl Williamson2010-10-312-29/+61
| | | | | | | This patch adds a set of synonyms \p{XPosixFOO} for the full extended Unicode version of \p{PosixFOO}, so only one rule need be remembered. Similarly, \p{XPerlSpace} is added to preserve the rule for the one similar class that doesn't have Posix in its name.
* perlrecharclass: NitsKarl Williamson2010-10-311-2/+3
|
* mktables: Clarify \d description for perlunipropsKarl Williamson2010-10-311-1/+1
|
* mktables: Add tests for wrong equivalence attemptsKarl Williamson2010-10-311-6/+15
| | | | | | | mktables allows for multiple tables to be made equivalent, which in Unix terminology means that they are essentially symbolic links. However this should happen only when they have the same code points in them to begin with. This adds a little more error checking.
* RT 75082: recv() with MSG_TRUNC flag SEGVDavid Mitchell2010-10-311-0/+3
| | | | | | | | | | | | The recv() system call, with the MSG_TRUNC flag, returns the true size of the packet, even if it is larger than the supplied buffer. Since perl's equivalent recv() function doesn't return the size (apart from what's implied as the returned length of the buffer), there doesn't seem to to be any way to return this value to the caller. So silently ignore it. Before, we were setting SvCUR to the size, even if it was larger than the buffer. Which was Bad.
* Merge the implementation of B::{main_root,main_start} using ALIAS.Nicholas Clark2010-10-311-8/+9
|
* RT 72246: rcatline memory leak on bad $/David Mitchell2010-10-312-3/+18
| | | | When allocating a temporary SV, make sure it will get freed if we die.
* adjust output of -DmDavid Mitchell2010-10-311-1/+1
| | | | | The address printed for malloc() didn't always match that for free(). Print the malloc() address *after* any modification by PERL_TRACK_MEMPOOL
* Update Unicode-Collate to CPAN version 0.64Chris 'BinGOs' Williams2010-10-3116-204/+4292
| | | | | | | | | | | | [DELTA] 0.64 Sun Oct 31 14:17:29 2010 - U::C::Locale newly supports locale: ja. - added Unicode::Collate::CJK::JISX0208 for ja. - a subroutine specified in 'overrideCJK' or 'overrideHangul' is allowed to return an integer or undef value. - fix: Ideographs Ext.A are assigned since UCA Version 9 (Unicode 3.1). This fix should affect only the case of (UCA_Version => 8).
* Merge the implementation of B::{dowarn,sub_generation} using ALIAS.Nicholas Clark2010-10-311-8/+9
|
* Merge the implementation of B::{minus_c,save_BEGINSs} using ALIAS.Nicholas Clark2010-10-311-6/+6
|
* Remove the conditional #define of OPpPAD_STATE from the BOOT block in B.xsNicholas Clark2010-10-312-5/+2
| | | | | This can now be done with less code in the Makefile.PL since commit b1826b71659a2c08 changed B to use ExtUtils::Constant
* Remove the variables stash and export_ok from the BOOT block in B.xsNicholas Clark2010-10-311-2/+0
| | | | | These are no longer needed since commit b1826b71659a2c08 changed how B was generating its exported constants.
* Merge the implementation of B::HE::{VAL,SVKEY_force} using ALIAS.Nicholas Clark2010-10-311-4/+6
|
* Merge the implementation of B::CV::{XSUB,XSUBANY} using ALIAS.Nicholas Clark2010-10-311-10/+7
|
* Tests for [perl #77358]Father Chrysostomos2010-10-301-3/+27
|
* [perl #77358] ISA warnings after aliasing packagesFather Chrysostomos2010-10-301-1/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit makes mro_package_moved call mro_isa_changed_in on the stash that has been assigned if it did not have an effective name (HvENAME) before the assignment. This is what was happening: {package Right} # autovivify it @thing::ISA = qw[Left]; *Left:: = delete $::{"Right::"}; When Right is deleted, it is not attached to the symbol table any more, so it has no effective name. mro_isa_changed_in3 is called on it, which resets the caches and then proceeds to cache a new isa linearisation. The new linearisation, of course, does not use the name ‘Left’. When Right is assigned over the top of Left, Right is given an HvENAME of ‘Left’. Then mro_isa_changed_is3 is called on the original Left, which, in turn, calls mro_isa_changed on its sub- classes. So thing’s isa linearisation is calculated, which is just ‘thing’ + get_linear_isa(Left) (where ‘Left’ now refers to what was previously called Right). This ends up using the bad linearisation. So the linearisation of a heretofore effectively nameless stash must be recalculated, but after it has been given a name. If it has an effective name already, then it appears elsewhere in the symbol table, and its effective name does not change. (The name added simply becomes an alternative to switch to should the HvENAME become invalid.) So the existing isa cache is fine and we do not need to call mro_isa_changed_in. (That is a rather lengthy commit message, is it not?)