X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=Changes;h=7a8b96b8567652e0a3d3919f56a66bdeff9a60dc;hb=93d3b392e52f4dbaeb643dd62c1be55b27ef77d4;hp=466332e0fdca265bdcff6a33c7d8a4c4ea236bf6;hpb=3edbfbe5ecbb7e6fb99acc874379580a458f3cff;p=p5sagit%2Fp5-mst-13.2.git diff --git a/Changes b/Changes index 466332e..7a8b96b 100644 --- a/Changes +++ b/Changes @@ -1,3 +1,2981 @@ +Please note: This file provides a summary of significant changes +between versions and sub-versions of Perl, not a complete list +of each modification. If you'd like more detailed information, +please consult the comments in the patches on which the relevant +release of Perl is based. (Patches can be found on any CPAN +site, in the .../src/5.0 directory for full version releases, +or in the .../src/5/0/unsupported directory for sub-version +releases.) + + +---------------- +Version 5.003_01 +---------------- + +Version 5.003_01 contains bugfixes and additions accumulated since +version 5.002_01, since the patch to version 5.003 was deliberately +kept simple. In addition to numerous small bugfixes in the core, +library files, and documentation, this patch contains several +significant revisions, summarized below: + +o Visible Changes to Core Functionality + + - A port to Plan9 has been started, and changes are integrated into + the standard distribution. As of this release, the Perl core + and several common extensions are working. + + - A set of basic methods in the UNIVERSAL class have been added to + the Perl core. Since UNIVERSAL is an implicit member of every + class's @ISA, the methods can be called via any object. + + - A mandatory warning has been added for 'declarations' of lexical + variables using the "my" operator which mask an existing lexical + variable declared in the same scope, making the previous variable + inaccessible by its name. + + - The "use" and "require" operators have been extended to allow + checking of the required module's version. The "use" operator + can now be used for an immediate version check of Perl itself. + + - A new "strict" pragma, "strict untie", has been added, which + produces an error if a tied value is untied when other references + exist to the internal object implementing the tie. + + - Barewords used as associative array keys (i.e. when specifying + an associative array element like $foo{__BAR} or on the left + side of the => operator) may now begin with an underscore as + well as an alphabetic character. + + - Some of the configuration information previously produced by the + -v switch has been moved to the -V switch, in order to keep -v + output concise. + +o Changes in Core Internals + + - Symbol table and method lookups have been made faster. + + - Perl subroutines which just return a constant value are now + optimized at compile time into inline constants. + + - Management of keys for associative arrays has been improved to + conserve space when the same keys are reused frequently, and + to pass true Perl values to tie functions, instead of stringified + representations. + + - Messages normally output to stderr may be directed to another + stream when Perl is built. This allows some platforms to + present diagnostic output in a separate window from normal + program results. + + - A bug which caused suiperl to fail silently, albeit securely, + in version 5.003 on some systems has been fixed. + + - Management of Unix-style signal handlers via the %SIG associative + array has been made safer. + + - Several global C symbols have been renamed to eliminate collisions + with system C header files or libraries on some platforms. + Unfortunately, this means that dynamic extensions compiled under + previous versions of Perl will need to be rebuilt for Perl + 5.003_01. We're in the process of cleaning up Perl's C + namespace to make it easier to link Perl with other binaries, + so this will probably happen again between now and version 5.004. + After that, we'll do our best to maintain binary compatibility + between versions. + + - An alternate allocation strategy has been added to Perl's + optional private memory management routines. This strategy, + which may be selected when Perl is built, is designed to + conserve memory in programs which allocate many small + chunks of memory with sizes near a power of 2, as is often + the case in Perl programs. + + - Several memory leaks in the creation and destruction of + multiple interpreters have been fixed. + +o Changes in the Standard Library and Utilities + + - The Opcode extension, which allows you to control a program's + access to Perl operations, has been added to the standard + distribution. This extends the work begun in the original + Safe extension, and subsumes it. The Safe interface is still + available. + + - The IO extension, which provides a set of classes for object- + oriented handling of common I/O tasks, has been added to the + standard distribution. The IO classes will form the basis + for future development of Perl's I/O interface, and will + subsume the FileHandle class in the near future. The default + class to which all Perl I/O handles belong is now IO::Handle, + rather than FileHandle. + + - The ExtUtils::Embed library module, which provides a set + of utility function to help in embedding Perl in other + applications, has been added to the standard distribution. + + - The Fatal library module, which provides a simple interface + for creating "do-or-die" equivalents of existing functions, + has been added to the standard distribution. + + - The FindBin library module, which determines the full path + to the currently executing program, has been added to the + standard distribution. + + - The DB_File extension, and the Getopt::Long, Test::Harness, + Text::Tabs, Text::Wrap, Time::Local and sigtrap library modules + have been updated to the authors' latest versions. + + - The Carp library module now considers the @ISA chain when + determining the caller's package for inclusion in error messages. + + - The h2xs, perlbug, and xsubpp utilities have been updated. + + - The standard Perl debugger has been updated, and the information + provided to the debugger when an XSUB is called has been improved, + making it possible for alternate debuggers (such as Devel::DProf) + to do a better job of tracking XSUB calls. + + - The pod documentation formatting tools in the standard distribution + can now handle characters in the input stream whose high bit is set. + + - The cperl-mode EMACS editing mode has been updated. + +o Changes in Documentation + + - Typographic and formatting errors have been corrected in the pod + documentation for the core and standard library files + + - Explanations of several core operators have been improved + + - The perldebug, perlembed, perlipc, perlsec, and perltrap documents + extensively revised. + +o Changes in OS-specific and Build-time Support + + - Support for the NeXT platform has been extended through + NeXTSTEP/OPENSTEP 4.0, and now includes the ability to create MABs. + + - Support for OS/2 has been extended as well, and now includes + options for building a.out binaries. + + - Support for VMS has also been extended, incorporating improved + processing of file specification strings, optional suppression of + carriage control interpretation for record-structured files, + improved support for the -S command line switch, a number of + VMS-specific bugfixes, and significantly improved performance + in line-oriented reading of files. + + - Several hints files have been added or updated: aux.sh (updated), + convexos.sh (updated), irix_4.sh (updated), irix_5.sh (updated), + irix_6_2.sh (updated), next_3.sh (updated), next_3_2.sh (new), + next_3_3.sh (new), next_4.sh (new), os2/sh (updated), + sco.sh (updated), and solaris_2.sh (updated). + + - The test driver for the regression tests now reports when a set + of tests have been skipped (presumable because the operation + they're designed to test isn't supported on the current system). + +------------- +Version 5.003 +------------- + + ***> IMPORTANT NOTICE: <*** +The main reason for this release was to fix a security bug affecting +suidperl on some systems. If you build suidperl on your system, it +is strongly recommended that you replace any existing copies with +version 5.003 or later immediately. + +The changes in 5.003 have been held to a minimum, in the hope that this +will simplify installation and testing at sites which may be affected +by the security hole in suidperl. In brief, 5.003 does the following: + +- Plugs security hole in suidperl mechanism on affected systems + +- MakeMaker was also updated to version 5.34, and extension Makefile.PLs + were modified to match it. + +- The following hints files were updated: bsdos.sh, hpux.sh, linux.sh, + machten.sh, solaris_2.sh + +- A fix was added to installperl to insure that file permissions were + set correctly for the installed C header files. + +- t/op/stat.t was modified to work around MachTen's belief that /dev/null + is a terminal device. + +- Incorporation of Perl version information into the VMS' version of + config.h was changed to make it compatible with the older VAXC. + +- Minor fixes were made to VMS-specific C code, and the routine + VMS::Filespec::rmsexpand was added. + +---------------- +Version 5.002_01 +---------------- + +- The EMBED namespace changes are now used by default, in order to better + segregate Perl's C global symbols from those belonging to embedding + applications or to libraries. This makes it necessary to rebuild dynamic + extensions built under previous versions of Perl without the EMBED option. + The default use of EMBED can be overridden by placing -DNO_EMBED on the + cc command line. + + The EMBED change is the beginning of a general cleanup of C global + symbols used by Perl, so binary compatibility with previously + compiled dynamic extensions may be broken again in the next few + releases. + +- Several bugs in the core were fixed, including the following: + - made sure FILE * for -e temp file was closed only once + - improved form of single-statement macro definitions to keep + as many ccs as possible happy + - fixed file tests to insure that signed values were used when + computing differences between times. + - fixed toke.c so implicit loop isn't doubled when perl is + invoked with both the -p and -n switches + +- The new SUBVERSION number has been included in the default value for + architecture-specific library directories, so development and + production architecture-dependent libraries can coexist. + +- Two new magic variables, $^E and $^O, have been added. $^E contains the + OS-specific equivalent of $!. $^O contains the name of the operating + system, in order to make it easily available to Perl code whose behavior + differs according to its environment. The standard library files have + been converted to use $^O in preference to $Config{'osname'}. + +- A mechanism was added to allow listing of locally applied patches + in the output of perl -v. + +- Miscellaneous minor corrections and updates were made to the documentation. + +- Extensive updates were made to the OS/2 and VMS ports + +- The following hints file were updated: bsdos.sh, dynixptx.sh, + irix_6_2.sh, linux.sh, os2.sh + +- Several changes were made to standard library files: + - reduced use of English.pm and $`, $', and $& in library modules, + since these degrade module loading and evaluation of regular expressions, + respectively. + - File/Basename.pm: Added path separator to dirname('.') + - File/Copy.pm: Added support for VMS and OS/2 system-level copy + - MakeMaker updated to v5.26 + - Symbol.pm now accepts old (') and new (::) package delimiters + - Sys/Syslog.pm uses Sys::Hostname only when necessary + - chat2.pl picks up necessary constants from socket.ph + - syslog.pl: Corrected thinko 'Socket' --> 'Syslog' + - xsubpp updated to v1.935 + + +- The perlbug utility is now more cautious about sending mail, in order + to reduce the chance of accidentally send a bug report by giving the + wrong response to a prompt. + +- The -m switch has been added to perldoc, causing it to display the + Perl code in target file as well as any documentation. + +------------- +Version 5.002 +------------- + +The main enhancement to the Perl core was the addition of prototypes. +Many of the modules that come with Perl have been extensively upgraded. + +Other than that, nearly all the changes for 5.002 were bug fixes of one +variety or another, so here's the bug list, along with the "resolution" +for each of them. If you wish to correspond about any of them, please +include the bug number (if any). + +Added APPLLIB_EXP for embedded perl library support. +Files patched: perl.c + +Couldn't define autoloaded routine by assignment to typeglob. +Files patched: pp_hot.c sv.c + +NETaa13525: Tiny patch to fix installman -n +From: Larry Wall +Files patched: installman + +NETaa13525: de-documented \v +Files patched: pod/perlop.pod pod/perlre.pod + +NETaa13525: doc changes +Files patched: pod/perlop.pod pod/perltrap.pod + +NETaa13525: perlxs update from Dean Roehrich +Files patched: pod/perlxs.pod + +NETaa13525: rename powerunix to powerux +Files patched: MANIFEST hints/powerux.sh + +NETaa13540: VMS uses CLK_TCK for HZ +Files patched: pp_sys.c + +NETaa13721: pad_findlex core dumps on bad CvOUTSIDE() +From: Carl Witty +Files patched: op.c sv.c toke.c + Each CV has a reference to the CV containing it lexically. Unfortunately, + it didn't reference-count this reference, so when the outer CV was freed, + we ended up with a pointer to memory that got reused later as some other kind + of SV. + +NETaa13721: warning suppression +Files patched: toke.c + (same) + +NETaa13722: walk.c had inconsistent static declarations +From: Tim Bunce +Files patched: x2p/walk.c + Consolidated the various declarations and made them consistent with + the actual definitions. + +NETaa13724: -MPackage=args patch +From: Tim Bunce +Files patched: perl.c pod/perlrun.pod + Added in the -MPackage=args patch too. + +NETaa13729: order-of-evaluation dependency in scope.c on leaving REGCONTEXT +From: "Jason Shirk" +Files patched: scope.c + Did + + I32 delta = SSPOPINT; + savestack_ix -= delta; /* regexp must have croaked */ + + instead. + +NETaa13731: couldn't assign external lexical array to itself +From: oneill@cs.sfu.ca +Files patched: op.c + The pad_findmy routine was only checking previous statements for previous + mention of external lexicals, so the fact that the current statement + already mentioned @list was not noted. It therefore allocated another + reference to the outside lexical, and this didn't compare equal when + the assigment parsing code was trying to determine whether there was a + common variable on either side of the equals. Since it didn't see the + same variable, it thought it could avoid making copies of the values on + the stack during list assignment. Unfortunately, before using those + values, the list assignment has to zero out the target array, which + destroys the values. + + The fix was to make pad_findmy search the current statement as well. This + was actually a holdover from some old code that was trying to delay + introduction of "my" variables until the next statement. This is now + done with a different mechanism, so the fix should not adversely affect + that. + +NETaa13733: s/// doesn't free old string when using copy mode +From: Larry Wall +Files patched: pp_ctl.c pp_hot.c + When I removed the use of sv_replace(), I simply forgot to free the old char*. + +NETaa13736: closures leaked memory +From: Carl Witty +Files patched: op.c pp.c + This is a specific example of a more general bug, fixed as NETaa13760, having + to do with reference counts on comppads. + +NETaa13739: XSUB interface caches gimme in case XSUB clobbers it +From: Dean Roehrich +Files patched: pp_hot.c + Applied suggest patch. Also deleted second gimme declaration as redundant. + +NETaa13760: comppad reference counts were inconsistent +From: Larry Wall +Files patched: op.c perl.c pp_ctl.c toke.c + All official references to comppads are supposed to be through compcv now, + but the transformation was not complete, resulting in memory leakage. + +NETaa13761: sv_2pv() wrongly preferred IV to NV when SV was readonly +From: "Jack R. Lawler" +Files patched: sv.c + Okay, I understand how this one happened. This is a case where a + beneficial fix uncovered a bug elsewhere. I changed the constant + folder to prefer integer results over double if the numbers are the + same. In this case, they aren't, but it leaves the integer value there + anyway because the storage is already allocated for it, and it *might* + be used in an integer context. And since it's producing a constant, it + sets READONLY. Unfortunately, sv_2pv() bogusly preferred the integer + value to the double when READONLY was set. This never showed up if you + just said + + print 1.4142135623731; + + because in that case, there was already a string value. + + +NETaa13772: shmwrite core dumps consistently +From: Gabe Schaffer +Files patched: opcode.h opcode.pl + The shmwrite operator is a list operator but neglected to push a stack + mark beforehand, because an 'm' was missing from opcode.pl. + +NETaa13773: $. was misdocumented as read-only. +From: Inaba Hiroto +Files patched: pod/perlvar.pod + <1.array-element-read-only> + % perl -le '$,=", "; $#w=5; for (@w) { $_=1; } print @w' + Modification of a read-only value attempted at -e line 1. + % perl4 -le '$,=", "; $#w=5; for (@w) { $_=1; } print @w' + 1, 1, 1, 1, 1, 1 + + This one may stay the way it is for performance reasons. + + <2.begin-local-RS> + % cat abc + a + b + c + % perl -e 'BEGIN { local $/ = ""; } print "$.:$_" while <>;' abc + 1:a + b + c + % perl -e '{ local $/ = ""; } print "$.:$_" while <>;' abc + 1:a + 2:b + 3:c + + $/ wasn't initialized early enough, so local set it back to permanently + undefined on exit from the block. + + <3.grep-x0-bug> + % perl -le 'print grep(/^-/ ? ($x=$_) x 0 : 1, "a", "-b", "c");' + a + + % perl4 -le 'print grep(/^-/ ? ($x=$_) x 0 : 1, "a", "-b", "c");' + ac + + An extra mark was left on the stack if (('x') x $repeat) was used in a scalar + context. + + <4.input-lineno-assign> + # perl -w does not complain about assignment to $. (Is this just a feature?) + # perlvar.pod says "This variable should be considered read-only." + % cat abc + a + b + c + % perl -wnle '$. = 10 if $. == 2; print "$.:$_"' abc + 1:a + 10:b + 11:c + + Fixed doc. + + <5.local-soft-ref.bug> + % perl -e 'local ${"a"}=1;' + zsh: 529 segmentation fault perl -e 'local ${"a"}=1;' + + Now says + Can't localize a reference at -e line 1. + + <6.package-readline> + % perl -e 'package foo; sub foo { 1; } package main; $_ = foo::foo(); print' + 1 + % perl -e ' + package readline; sub foo { 1; } package main; $_ = readline::foo(); print' + Undefined subroutine &main::foo called at -e line 1. + % perl -e ' + package readline; sub foo { 1; } package main; $_ = &readline::foo(); print' + 1 + + Now treats foo::bar correctly even if foo is a keyword. + + <7.page-head-set-to-null-string> + % cat page-head + #From: russell@ccu1.auckland.ac.nz (Russell Fulton) + #Newsgroups: comp.lang.perl + #Subject: This script causes Perl 5.00 to sementation fault + #Date: 15 Nov 1994 00:11:37 GMT + #Message-ID: <3a8ubp$jrj@net.auckland.ac.nz> + + select((select(STDOUT), $^='')[0]); #this is the critical line + $a = 'a'; + write ; + exit; + + format STDOUT = + @<<<<<< + $a + . + + % perl page-head + zsh: 1799 segmentation fault perl /tmp/page-head + + Now says + Undefined top format "main::" called at ./try line 11. + + <8.sub-as-index> + # parser bug? + % perl -le 'sub foo {0}; $x[0]=0;$x[foo]<=0' + Unterminated <> operator at -e line 1. + % perl -le 'sub foo {0}; $x[0]=0;$x[foo()]<=0' + + A right square bracket now forces expectation of an operator. + + <9.unary-minus-to-regexp-var> + % cat minus-reg + #From: Michael Cook + #Newsgroups: comp.lang.perl + #Subject: bug: print -$1 + #Date: 01 Feb 1995 15:31:25 GMT + #Message-ID: + + $_ = "123"; + /\d+/; + print $&, "\n"; + print -$&, "\n"; + print 0-$&, "\n"; + + % perl minus-reg + 123 + 123 + -123 + + Apparently already fixed in my copy. + + <10.vec-segv> + % cat vec-bug + ## Offset values are changed for my machine. + + #From: augustin@gdstech.grumman.com (Conrad Augustin) + #Subject: perl5 vec() bug? + #Message-ID: <1994Nov22.193728.25762@gdstech.grumman.com> + #Date: Tue, 22 Nov 1994 19:37:28 GMT + + #The following two statements each produce a segmentation fault in perl5: + + #vec($a, 21406, 32) = 1; # seg fault + vec($a, 42813, 16) = 1; # seg fault + + #When the offset values are one less, all's well: + #vec($a, 21405, 32) = 1; # ok + #vec($a, 42812, 16) = 1; # ok + + #Interestingly, this is ok for all high values of N: + #$N=1000000; vec($a, $N, 8) = 1; + + % perl vec-bug + zsh: 1806 segmentation fault perl vec-bug + + Can't reproduce this one. + + +NETaa13773: $/ not correctly localized in BEGIN +Files patched: perl.c + (same) + +NETaa13773: foo::bar was misparsed if foo was a reserved word +Files patched: toke.c toke.c + (same) + +NETaa13773: right square bracket didn't force expectation of operator +Files patched: toke.c + (same) + +NETaa13773: scalar ((x) x $repeat) left stack mark +Files patched: op.c + (same) + +NETaa13778: -w coredumps on <$> +From: Hans Mulder +Files patched: pp_hot.c toke.c + Now produces suggested error message. Also installed guard in warning code + that coredumped. + +NETaa13779: foreach didn't use savestack mechanism +From: Hans Mulder +Files patched: cop.h pp_ctl.c + The foreach mechanism saved the old scalar value on the context stack + rather than the savestack. It could consequently get out of sync if + unexpectedly unwound. + +NETaa13785: GIMME sometimes used wrong context frame +From: Greg Earle +Files patched: embed.h global.sym op.h pp_ctl.c proto.h + The expression inside the return was taking its context from the immediately + surrounding block rather than the innermost surrounding subroutine call. + +NETaa13797: could modify sv_undef through auto-vivification +From: Ilya Zakharevich +Files patched: pp.c + Inserted the missing check for readonly values on auto-vivification. + +NETaa13798: if (...) {print} treats print as quoted +From: Larry Wall +Files patched: toke.c + The trailing paren of the condition was setting expectations to XOPERATOR + rather than XBLOCK, so it was being treated like ${print}. + +NETaa13926: commonality was not detected in assignments using COND_EXPR +From: Mark Hanson +Files patched: opcode.h opcode.pl + The assignment compiler didn't check the 2nd and 3rd args of a ?: + for commonality. It still doesn't, but I made ?: into a "dangerous" + operator so it is forced to treat it as common. + +NETaa13957: was marking the PUSHMARK as modifiable rather than the arg +From: David Couture +Files patched: op.c sv.c + It was marking the PUSHMARK as modifiable rather than the arg. + +NETaa13962: documentation of behavior of scalar <*> was unclear +From: Tom Christiansen +Files patched: pod/perlop.pod + Added the following to perlop: + + A glob only evaluates its (embedded) argument when it is starting a new + list. All values must be read before it will start over. In a list + context this isn't important, because you automatically get them all + anyway. In a scalar context, however, the operator returns the next value + each time it is called, or a FALSE value if you've just run out. Again, + FALSE is returned only once. So if you're expecting a single value from + a glob, it is much better to say + + ($file) = ; + + than + + $file = ; + + because the latter will alternate between returning a filename and + returning FALSE. + + +NETaa13986: split ignored /m pattern modifier +From: Winfried Koenig +Files patched: pp.c + Fixed to work like m// and s///. + +NETaa13992: regexp comments not seen after + in non-extended regexp +From: Mark Knutsen +Files patched: regcomp.c + The code to skip regexp comments was guarded by a conditional that only + let it work when /x was in effect. + +NETaa14014: use subs should not count as definition, only as declaration +From: Keith Thompson +Files patched: sv.c + On *foo = \&bar, doesn't set GVf_IMPORTED if foo and bar are in same package. + +NETaa14021: sv_inc and sv_dec "upgraded" magical SV to non-magical +From: Paul A Sand +Also: Andreas Koenig +Files patched: sv.c + The sv_inc() and sv_dec() routines "upgraded" null magical SVs to non-magical. + +NETaa14086: require should check tainting +From: Karl Simon Berg +Files patched: pp_ctl.c + Since we shouldn't allow tainted requires anyway, it now says: + + Insecure dependency in require while running with -T switch at tst.pl line 1. + +NETaa14104: negation fails on magical variables like $1 +From: tim +Files patched: pp.c + Negation was failing on magical values like $1. It was testing the wrong + bits and also failed to provide a final "else" if none of the bits matched. + +NETaa14107: deep sort return leaked contexts +From: Quentin Fennessy +Files patched: pp_ctl.c + Needed to call dounwind() appropriately. + +NETaa14129: attempt to localize via a reference core dumps +From: Michele Sardo +Files patched: op.c pod/perldiag.pod + Now produces an error "Can't localize a reference", with explanation in + perldiag. + +NETaa14138: substr() and s/// can cause core dump +From: Andrew Vignaux +Files patched: pp_hot.c + Forgot to call SvOOK_off() on the SV before freeing its string. + +NETaa14145: ${@INC}[0] dumped core in debugger +From: Hans Mulder +Files patched: sv.c + Now croaks "Bizarre copy of ARRAY in block exit", which is better than + a core dump. The fact that ${@INC}[0] means $INC[0] outside the debugger + is a different bug. + +NETaa14147: bitwise assignment ops wipe out byte of target string +From: Jim Richardson +Files patched: doop.c + The code was assuming that the target was not either of the two operands, + which is false for an assignment operator. + +NETaa14153: lexing of lexicals in patterns fooled by character class +From: Dave Bianchi +Files patched: toke.c + It never called the dwimmer, which is how it fooled it. + +NETaa14154: allowed autoloaded methods by recognizing sub method; declaration +From: Larry Wall +Files patched: gv.c + Made sub method declaration sufficient for autoloader to stop searching on. + +NETaa14156: shouldn't optimize block scope on tainting +From: Pete Peterson +Files patched: op.c toke.c + I totally disabled the block scope optimization when running tainted. + +NETaa14157: -T and -B only allowed 1/30 "odd" characters--changed to 1/3 +From: Tor Lillqvist +Files patched: pp_sys.c + Applied suggested patch. + +NETaa14160: deref of null symbol should produce null list +From: Jared Rhine +Files patched: pp_hot.c + It didn't check for list context before returning undef. + +NETaa14162: POSIX::gensym now returns a symbol reference +From: Josh N. Pritikin +Also: Tim Bunce +Files patched: ext/POSIX/POSIX.pm + Applied suggested patch. + +NETaa14164: POSIX autoloader now distinguishes non-constant "constants" +From: Tim Bunce +Files patched: ext/POSIX/POSIX.pm ext/POSIX/POSIX.xs + The .xs file now distinguishes non-constant "constants" by setting EAGAIN. + This will also let us use #ifdef within the .xs file to de-constantify + any other macros that happen not to be constants even if they don't use + an argument. + +NETaa14166: missing semicolon after "my" induces core dump +From: Thomas Kofler +Files patched: toke.c + The parser was left thinking it was still processing a "my", and flubbed. + I made it wipe out the "in_my" variable on a syntax error. + +NETaa14166: missing semicolon after "my" induces core dump" +Files patched: toke.c + (same) + +NETaa14206: can now use English and strict at the same time +From: Andrew Wilcox +Files patched: sv.c + It now counts imported symbols as okay under "use strict". + +NETaa14206: can now use English and strict at the same time +Files patched: gv.c pod/perldiag.pod + (same) + +NETaa14265: elseif now produces severe warning +From: Yutao Feng +Files patched: pod/perldiag.pod toke.c + Now complains explicitly about "elseif". + +NETaa14279: list assignment propagated taintedness to independent scalars +From: Tim Freeman +Files patched: pp_hot.c + List assignment needed to be modified so that tainting didn't propagate + between independent scalar values. + +NETaa14312: undef in @EXPORTS core dumps +From: William Setzer +Files patched: lib/Exporter.pm + Now says: + + Unable to create sub named "t::" at lib/Exporter.pm line 159. + Illegal null symbol in @t::EXPORT at -e line 1 + BEGIN failed--compilation aborted at -e line 1. + + +NETaa14312: undef in @EXPORTS core dumps +Files patched: pod/perldiag.pod sv.c + (same) + +NETaa14321: literal @array check shouldn't happen inside embedded expressions +From: Mark H. Nodine +Files patched: toke.c + The general solution to this is to disable the literal @array check within + any embedded expression. For instance, this also failed bogusly: + + print "$foo{@foo}"; + + The reason fixing this also fixes the s///e problem is that the lexer + effectively puts the RHS into a do {} block, making the expression + embedded within curlies, as far as the error message is concerned. + +NETaa14322: now localizes $! during POSIX::AUTOLOAD +From: Larry Wall +Files patched: ext/POSIX/POSIX.pm + Added local $! = 0. + +NETaa14324: defined() causes spurious sub existence +From: "Andreas Koenig" +Files patched: op.c pp.c + It called pp_rv2cv which wrongly assumed it could add any sub it referenced. + +NETaa14336: use Module () forces import of nothing +From: Tim Bunce +Files patched: op.c + use Module () now refrains from calling import at all. + +NETaa14353: added special HE allocator +From: Larry Wall +Files patched: global.sym + +NETaa14353: added special HE allocator +Files patched: hv.c perl.h + +NETaa14353: array extension now converts old memory to SV storage. +Files patched: av.c av.h sv.c + +NETaa14353: hashes now convert old storage into SV arenas. +Files patched: global.sym + +NETaa14353: hashes now convert old storage into SV arenas. +Files patched: hv.c perl.h + +NETaa14353: upgraded SV arena allocation +Files patched: proto.h + +NETaa14353: upgraded SV arena allocation +Files patched: perl.c sv.c + +NETaa14422: added rudimentary prototypes +From: Gisle Aas +Files patched: Makefile.SH op.c op.c perly.c perly.c.diff perly.h perly.y proto.h sv.c toke.c + Message-Id: <9509290018.AA21548@scalpel.netlabs.com> + To: doughera@lafcol.lafayette.edu (Andy Dougherty) + Cc: perl5-porters@africa.nicoh.com + Subject: Re: Jumbo Configure patch vs. 1m. + Date: Thu, 28 Sep 95 17:18:54 -0700 + From: lwall@scalpel.netlabs.com (Larry Wall) + + : No. Larry's currently got the patch pumpkin for all such core perl topics. + + I dunno whether you should let me have the patch pumpkin or not. To fix + a Sev 2 I just hacked in rudimentary prototypes. :-) + + We can now define true unary subroutines, as well as argumentless + subroutines: + + sub baz () { 12; } # Must not have argument + sub bar ($) { $_[0] * 7 } # Must have exactly one argument + sub foo ($@) { print "@_\n" } # Must have at least one argument + foo bar baz / 2 || "oops", "is the answer"; + + This prints "42 is the answer" on my machine. That is, it's the same as + + foo( bar( baz() / 2) || "oops", "is the answer"); + + Attempting to compile + + foo; + + results in + + Too few arguments for main::foo at ./try line 8, near "foo;" + + Compiling + + bar 1,2,3; + + results in + + Too many arguments for main::bar at ./try line 8, near "foo;" + + But + + @array = ('a','b','c'); + foo @array, @array; + + prints "3 a b c" because the $ puts the first arg of foo into scalar context. + + The main win at this point is that we can say + + sub AAA () { 1; } + sub BBB () { 2; } + + and the user can say AAA + BBB and get 3. + + I'm not quite sure how this interacts with autoloading though. I fear + POSIX.pm will need to say + + sub E2BIG (); + sub EACCES (); + sub EAGAIN (); + sub EBADF (); + sub EBUSY (); + ... + sub _SC_STREAM_MAX (); + sub _SC_TZNAME_MAX (); + sub _SC_VERSION (); + + unless we can figure out how to efficiently declare a default prototype + at import time. Meaning, not using eval. Currently + + *foo = \&bar; + + (the ordinary import mechanism) implicitly stubs &bar with no prototype if + &bar is not yet declared. It's almost like you want an AUTOPROTO to + go with your AUTOLOAD. + + Another thing to rub one's 5 o'clock shadow over is that there's no way + to apply a prototype to a method call at compile time. + + And no, I don't want to have the + + sub howabout ($formal, @arguments) { ... } + + argument right now. + + Larry + +NETaa14422: couldn't take reference of a prototyped function +Files patched: op.c + (same) + +NETaa14423: use didn't allow expressions involving the scratch pad +From: Graham Barr +Files patched: op.c perly.c perly.c.diff perly.y proto.h vms/perly_c.vms + Applied suggested patch. + +NETaa14444: lexical scalar didn't autovivify +From: Gurusamy Sarathy +Files patched: op.c pp_hot.c + It didn't have code in pp_padsv to do the right thing. + +NETaa14448: caller could dump core when used within an eval or require +From: Danny R. Faught +Files patched: pp_ctl.c + caller() was incorrectly assuming the context stack contained a subroutine + context when it in fact contained an eval context. + +NETaa14451: improved error message on bad pipe filehandle +From: Danny R. Faught +Files patched: pp_sys.c + Now says the slightly more informative + + Can't use an undefined value as filehandle reference at ./try line 3. + +NETaa14462: pp_dbstate had a scope leakage on recursion suppression +From: Tim Bunce +Files patched: pp_ctl.c + Swapped the code in question around. + +NETaa14482: sv_unref freed ref prematurely at times +From: Gurusamy Sarathy +Files patched: sv.c + Made sv_unref() mortalize rather than free the old reference. + +NETaa14484: appending string to array produced bizarre results +From: Greg Ward +Also: Malcolm Beattie +Files patched: pp_hot.c + Will now say, "Can't coerce ARRAY to string". + +NETaa14525: assignment to globs didn't reset them correctly +From: Gurusamy Sarathy +Files patched: sv.c + Applied parts of patch not overridden by subsequent patch. + +NETaa14529: a partially matching subpattern could spoof infinity detector +From: Wayne Berke +Files patched: regexec.c + A partial match on a subpattern could fool the infinite regress detector + into thinking progress had been made. + The previous workaround prevented another bug (NETaa14529) from being fixed, + so I've backed it out. I'll need to think more about how to detect failure + to progress. I'm still hopeful it's not equivalent to the halting problem. + +NETaa14535: patches from Gurusamy Sarathy +From: Gurusamy Sarathy +Files patched: op.c pp.c pp_hot.c regexec.c sv.c toke.c + Applied most recent suggested patches. + +NETaa14537: select() can return too soon +From: Matt Kimball +Also: Andreas Gustafsson +Files patched: pp_sys.c + +NETaa14538: method calls were treated like do {} under loop modifiers +From: Ilya Zakharevich +Files patched: perly.c perly.y + Needed to take the OPf_SPECIAL flag off of entersubs from method reductions. + (It was probably a cut-and-paste error from long ago.) + +NETaa14540: foreach (@array) no longer does extra stack copy +From: darrinm@lmc.com +Files patched: Todo op.c pp_ctl.c pp_hot.c + Fixed by doing the foreach(@array) optimization, so it iterates + directly through the array, and can detect the implicit shift from + referencing <>. + +NETaa14541: new version of perlbug +From: Kenneth Albanowski +Files patched: README pod/perl.pod utils/perlbug.PL + Brought it up to version 1.09. + +NETaa14541: perlbug 1.11 +Files patched: utils/perlbug.PL + (same) + +NETaa14548: magic sets didn't check private OK bits +From: W. Bradley Rubenstein +Files patched: mg.c + The magic code was getting mixed up between private and public POK bits. + +NETaa14550: made ~ magic magical +From: Tim Bunce +Files patched: sv.c + Applied suggested patch. + +NETaa14551: humongous header causes infinite loop in format +From: Grace Lee +Files patched: pp_sys.c + Needed to check for page exhaustion after doing top-of-form. + +NETaa14558: attempt to call undefined top format core dumped +From: Hallvard B Furuseth +Files patched: pod/perldiag.pod pp_sys.c + Now issues an error on attempts to call a non-existent top format. + +NETaa14561: Gurusamy Sarathy's G_KEEPERR patch +From: Andreas Koenig +Also: Gurusamy Sarathy +Also: Tim Bunce +Files patched: cop.h interp.sym perl.c perl.h pp_ctl.c pp_sys.c sv.c toke.c + Applied latest patch. + +NETaa14581: shouldn't execute BEGIN when there are compilation errors +From: Rickard Westman +Files patched: op.c + Perl should not try to execute BEGIN and END blocks if there's been a + compilation error. + +NETaa14582: got SEGV sorting sparse array +From: Rick Pluta +Files patched: pp_ctl.c + Now weeds out undefined values much like Perl 4 did. + Now sorts undefined values to the front. + +NETaa14582: sort was letting unsortable values through to comparison routine +Files patched: pp_ctl.c + (same) + +NETaa14585: globs in pad space weren't properly cleaned up +From: Gurusamy Sarathy +Files patched: op.c pp.c pp_hot.c sv.c + Applied suggested patch. + +NETaa14614: now does dbmopen with perl_eval_sv() +From: The Man +Files patched: perl.c pp_sys.c proto.h + dbmopen now invokes perl_eval_sv(), which should handle error conditions + better. + +NETaa14618: exists doesn't work in GDBM_File +From: Andrew Wilcox +Files patched: ext/GDBM_File/GDBM_File.xs + Applied suggested patch. + +NETaa14619: tied() +From: Larry Wall +Also: Paul Marquess +Files patched: embed.h global.sym keywords.h keywords.pl opcode.h opcode.pl pp_sys.c toke.c + Applied suggested patch. + +NETaa14636: Jumbo Dynaloader patch +From: Tim Bunce +Files patched: ext/DynaLoader/DynaLoader.pm ext/DynaLoader/dl_dld.xs ext/DynaLoader/dl_dlopen.xs ext/DynaLoader/dl_hpux.xs ext/DynaLoader/dl_next.xs ext/DynaLoader/dl_vms.xs ext/DynaLoader/dlutils.c + Applied suggested patches. + +NETaa14637: checkcomma routine was stupid about bareword sub calls +From: Tim Bunce +Files patched: toke.c + The checkcomma routine was stupid about bareword sub calls. + +NETaa14639: (?i) didn't reset on runtime patterns +From: Mark A. Scheel +Files patched: op.h pp_ctl.c toke.c + It didn't distinguish between permanent flags outside the pattern and + temporary flags within the pattern. + +NETaa14649: selecting anonymous globs dumps core +From: Chip Salzenberg +Files patched: cop.h doio.c embed.h global.sym perl.c pp_sys.c proto.h + Applied suggested patch, but reversed the increment and decrement to avoid + decrementing and freeing what we're going to increment. + +NETaa14655: $? returned negative value on AIX +From: Kim Frutiger +Also: Stephen D. Lee +Files patched: pp_sys.c + Applied suggested patch. + +NETaa14668: {2,} could match once +From: Hugo van der Sanden +Files patched: regexec.c + When an internal pattern failed a conjecture, it didn't back off on the + number of times it thought it had matched. + +NETaa14673: open $undefined dumped core +From: Samuli K{rkk{inen +Files patched: pp_sys.c + pp_open() didn't check its argument for globness. + +NETaa14683: stringifies were running pad out of space +From: Robin Barker +Files patched: op.h toke.c + Increased PADOFFSET to a U32, and made lexer not put double-quoted strings + inside OP_STRINGIFY unless they really needed it. + +NETaa14689: shouldn't have . in @INC when tainting +From: William R. Somsky +Files patched: perl.c + Now does not put . into @INC when tainting. It may still be added with a + + use lib "."; + + or, to put it at the end, + + BEGIN { push(@INC, ".") } + + but this is not recommended unless a chdir to a known location has been done + first. + +NETaa14690: values inside tainted SVs were ignored +From: "James M. Stern" +Files patched: pp.c pp_ctl.c + It was assuming that a tainted value was a string. + +NETaa14692: format name required qualification under use strict +From: Tom Christiansen +Files patched: gv.c + Now treats format names the same as subroutine names. + +NETaa14695: added simple regexp caching +From: John Rowe +Files patched: pp_ctl.c + Applied suggested patch. + +NETaa14697: regexp comments were sometimes wrongly treated as literal text +From: Tom Christiansen +Files patched: regcomp.c + The literal-character grabber didn't know about extended comments. + N.B. '#' is treated as a comment character whenever the /x option is + used now, so you can't include '#' as a simple literal in /x regexps. + + (By the way, Tom, the boxed form of quoting in the previous enclosure is + exceeding antisocial when you want to extract the code from it.) + +NETaa14704: closure got wrong outer scope if outer sub was predeclared +From: Marc Paquette +Files patched: op.c + The outer scope of the anonymous sub was set to the stub rather than to + the actual subroutine. I kludged it by making the outer scope of the + stub be the actual subroutine, if anything is depending on the stub. + +NETaa14705: $foo .= $foo did free memory read +From: Gerd Knops +Files patched: sv.c + Now modifies address to copy if it was reallocated. + +NETaa14709: Chip's FileHandle stuff +From: Larry Wall +Also: Chip Salzenberg +Files patched: MANIFEST ext/FileHandle/FileHandle.pm ext/FileHandle/FileHandle.xs ext/FileHandle/Makefile.PL ext/POSIX/POSIX.pm ext/POSIX/POSIX.pod ext/POSIX/POSIX.xs lib/FileCache.pm lib/Symbol.pm t/lib/filehand.t t/lib/posix.t + Applied suggested patches. + +NETaa14711: added (&) and (*) prototypes for blocks and symbols +From: Kenneth Albanowski +Files patched: Makefile.SH op.c perly.c perly.h perly.y toke.c + & now means that it must have an anonymous sub as that argument. If + it's the first argument, the sub may be specified as a block in the + indirect object slot, much like grep or sort, which have prototypes of (&@). + + Also added * so you can do things like + + sub myopen (*;$); + + myopen(FOO, $filename); + +NETaa14713: setuid FROM root now defaults to not do tainting +From: Tony Camas +Files patched: mg.c perl.c pp_hot.c + Applied suggested patch. + +NETaa14714: duplicate magics could be added to an SV +From: Yary Hluchan +Files patched: sv.c sv.c + The sv_magic() routine didn't properly check to see if it already had a + magic of that type. Ordinarily it would have, but it was called during + mg_get(), which forces the magic flags off temporarily. + +NETaa14721: sub defined during erroneous do-FILE caused core dump +From: David Campbell +Files patched: op.c + Fixed the seg fault. I couldn't reproduce the return problem. + +NETaa14734: ref should never return undef +From: Dale Amon +Files patched: pp.c t/op/overload.t + Now returns null string. + +NETaa14751: slice of undefs now returns null list +From: Tim Bunce +Files patched: pp.c pp_hot.c + Null list clobberation is now done in lslice, not aassign. + +NETaa14789: select coredumped on Linux +From: Ulrich Kunitz +Files patched: pp_sys.c + Applied suggested patches, more or less. + +NETaa14789: straightened out ins and out of duping +Files patched: lib/IPC/Open3.pm + (same) + +NETaa14791: implemented internal SUPER class +From: Nick Ing-Simmons +Also: Dean Roehrich +Files patched: gv.c + Applied suggested patch. + +NETaa14845: s/// didn't handle offset strings +From: Ken MacLeod +Files patched: pp_ctl.c + Needed a call to SvOOK_off(targ) in pp_substcont(). + +NETaa14851: Use of << to mean <<"" is deprecated +From: Larry Wall +Files patched: toke.c + +NETaa14865: added HINT_BLOCK_SCOPE to "elsif" +From: Jim Avera +Files patched: perly.y + Needed to set HINT_BLOCK_SCOPE on "elsif" to prevent the do block from + being optimized away, which caused the statement transition in elsif + to reset the stack too far back. + +NETaa14876: couldn't delete localized GV safely +From: John Hughes +Files patched: pp.c scope.c + The reference count of the "borrowed" GV needed to be incremented while + there was a reference to it in the savestack. + +NETaa14887: couldn't negate magical scalars +From: ian +Also: Gurusamy Sarathy +Files patched: pp.c + Applied suggested patch, more or less. (It's not necessary to test both + SvNIOK and SvNIOKp, since the private bits are always set if the public + bits are set.) + +NETaa14893: /m modifier was sticky +From: Jim Avera +Files patched: pp_ctl.c + pp_match() and pp_subst() were using an improperly scoped SAVEINT to restore + the value of the internal variable multiline. + +NETaa14893: /m modifier was sticky +Files patched: cop.h pp_hot.c + (same) + +NETaa14916: complete.pl retained old return value +From: Martyn Pearce +Files patched: lib/complete.pl + Applied suggested patch. + +NETaa14928: non-const 3rd arg to split assigned to list could coredump +From: Hans de Graaff +Files patched: op.c + The optimizer was assuming the OP was an OP_CONST. + +NETaa14942: substr as lvalue could disable magic +From: Darrell Kindred +Files patched: pp.c + The substr was disabling the magic of $1. + +NETaa14990: "not" not parseable when expecting term +From: "Randal L. Schwartz" +Files patched: perly.c perly.c.diff perly.y vms/perly_c.vms + The NOTOP production needed to be moved down into the terms. + +NETaa14993: Bizarre copy of formline +From: Tom Christiansen +Also: Charles Bailey +Files patched: sv.c + Applied suggested patch. + +NETaa14998: sv_add_arena() no longer leaks memory +From: Andreas Koenig +Files patched: av.c hv.c perl.h sv.c + Now keeps one potential arena "on tap", but doesn't use it unless there's + demand for SV headers. When an AV or HV is extended, its old memory + becomes the next potential arena unless there already is one, in which + case it is simply freed. This will have the desired property of not + stranding medium-sized chunks of memory when extending a single array + repeatedly, but will not degrade when there's no SV demand beyond keeping + one chunk of memory on tap, which generally will be about 250 bytes big, + since it prefers the earlier freed chunk over the later. See the nice_chunk + variable. + +NETaa14999: $a and $b now protected from use strict and lexical declaration +From: Tom Christiansen +Files patched: gv.c pod/perldiag.pod toke.c + Bare $a and $b are now allowed during "use strict". In addition, + the following diag was added: + + =item Can't use "my %s" in sort comparison + + (F) The global variables $a and $b are reserved for sort comparisons. + You mentioned $a or $b in the same line as the <=> or cmp operator, + and the variable had earlier been declared as a lexical variable. + Either qualify the sort variable with the package name, or rename the + lexical variable. + + +NETaa15034: use strict refs should allow calls to prototyped functions +From: Roderick Schertler +Files patched: perly.c perly.c.diff perly.y toke.c vms/perly_c.vms + Applied patch suggested by Chip. + +NETaa15083: forced $AUTOLOAD to be untainted +From: Tim Bunce +Files patched: gv.c pp_hot.c + Stripped any taintmagic from $AUTOLOAD after setting it. + +NETaa15084: patch for Term::Cap +From: Mark Kaehny +Also: Hugo van der Sanden +Files patched: lib/Term/Cap.pm + Applied suggested patch. + +NETaa15086: null pattern could cause coredump in s//_$1_/ +From: "Paul E. Maisano" +Files patched: cop.h pp_ctl.c + If the replacement pattern was complicated enough to cause pp_substcont + to be called, then it lost track of which REGEXP* it was supposed to + be using. + +NETaa15087: t/io/pipe.t didn't work on AIX +From: Andy Dougherty +Files patched: t/io/pipe.t + Applied suggested patch. + +NETaa15088: study was busted +From: Hugo van der Sanden +Files patched: opcode.h opcode.pl pp.c + It was studying its scratch pad target rather than the argument supplied. + +NETaa15090: MSTATS patch +From: Tim Bunce +Files patched: global.sym malloc.c perl.c perl.h proto.h + Applied suggested patch. + +NETaa15098: longjmp out of magic leaks memory +From: Chip Salzenberg +Files patched: mg.c sv.c + Applied suggested patch. + +NETaa15102: getpgrp() is broken if getpgrp2() is available +From: Roderick Schertler +Files patched: perl.h pp_sys.c + Applied suggested patch. + +NETaa15103: prototypes leaked opcodes +From: Chip Salzenberg +Files patched: op.c + Applied suggested patch. + +NETaa15107: quotameta memory bug on all metacharacters +From: Chip Salzenberg +Files patched: pp.c + Applied suggested patch. + +NETaa15108: Fix for incomplete string leak +From: Chip Salzenberg +Files patched: toke.c + Applied suggested patch. + +NETaa15110: couldn't use $/ with 8th bit set on some architectures +From: Chip Salzenberg +Files patched: doop.c interp.sym mg.c op.c perl.c perl.h pp_ctl.c pp_hot.c pp_sys.c sv.c toke.c util.c + Applied suggested patches. + +NETaa15112: { a_1 => 2 } didn't parse as expected +From: Stuart M. Weinstein +Files patched: toke.c + The little dwimmer was only skipping ALPHA rather than ALNUM chars. + +NETaa15123: bitwise ops produce spurious warnings +From: Hugo van der Sanden +Also: Chip Salzenberg +Also: Andreas Gustafsson +Files patched: sv.c + Decided to suppress the warning in the conversion routines if merely converting + a temporary, which can never be a user-supplied value anyway. + +NETaa15129: #if defined (foo) misparsed in h2ph +From: Roderick Schertler +Files patched: utils/h2ph.PL + Applied suggested patch. + +NETaa15131: some POSIX functions assumed valid filehandles +From: Chip Salzenberg +Files patched: ext/POSIX/POSIX.xs + Applied suggested patch. + +NETaa15151: don't optimize split on OPpASSIGN_COMMON +From: Huw Rogers +Files patched: op.c + Had to swap the optimization down to after the assignment op is generated + and COMMON is calculated, and then clean up the resultant tree differently. + +NETaa15154: MakeMaker-5.18 +From: Andreas Koenig +Files patched: MANIFEST lib/ExtUtils/Liblist.pm lib/ExtUtils/MM_VMS.pm lib/ExtUtils/MakeMaker.pm lib/ExtUtils/Mksymlists.pm + Brought it up to 5.18. + +NETaa15156: some Exporter tweaks +From: Roderick Schertler +Also: Tim Bunce +Files patched: lib/Exporter.pm + Also did Tim's Tiny Trivial patch. + +NETaa15157: new version of Test::Harness +From: Andreas Koenig +Files patched: lib/Test/Harness.pm + Applied suggested patch. + +NETaa15175: overloaded nomethod has garbage 4th op +From: Ilya Zakharevich +Files patched: gv.c + Applied suggested patch. + +NETaa15179: SvPOK_only shouldn't back off on offset pointer +From: Gutorm.Hogasen@oslo.teamco.telenor.no +Files patched: sv.h + SvPOK_only() was calling SvOOK_off(), which adjusted the string pointer + after tr/// has already acquired it. It shouldn't really be necessary + for SvPOK_only() to undo an offset string pointer, since there's no + conflict with a possible integer value where the offset is stored. + +NETaa15193: & now always bypasses prototype checking +From: Larry Wall +Files patched: dump.c op.c op.h perly.c perly.c.diff perly.y pod/perlsub.pod pp_hot.c proto.h toke.c vms/perly_c.vms vms/perly_h.vms + Turned out to be a big hairy deal because the lexer turns foo() into &foo(). + But it works consistently now. Also fixed pod. + +NETaa15197: 5.002b2 is 'appending' to $@ +From: Gurusamy Sarathy +Files patched: pp_ctl.c + Applied suggested patch. + +NETaa15201: working around Linux DBL_DIG problems +From: Kenneth Albanowski +Files patched: hints/linux.sh sv.c + Applied suggested patch. + +NETaa15208: SelectSaver +From: Chip Salzenberg +Files patched: MANIFEST lib/SelectSaver.pm + Applied suggested patch. + +NETaa15209: DirHandle +From: Chip Salzenberg +Files patched: MANIFEST lib/DirHandle.pm t/lib/dirhand.t + +NETaa15210: sysopen() +From: Chip Salzenberg +Files patched: doio.c keywords.pl lib/ExtUtils/typemap opcode.pl pod/perlfunc.pod pp_hot.c pp_sys.c proto.h toke.c + Applied suggested patch. Hope it works... + +NETaa15211: use mnemonic names in Safe setup +From: Chip Salzenberg +Files patched: ext/Safe/Safe.pm + Applied suggested patch, more or less. + +NETaa15214: prototype() +From: Chip Salzenberg +Files patched: ext/Safe/Safe.pm global.sym keywords.pl opcode.pl pp.c toke.c + Applied suggested patch. + +NETaa15217: -w problem with -d:foo +From: Tim Bunce +Files patched: perl.c + Applied suggested patch. + +NETaa15218: *GLOB{ELEMENT} +From: Larry Wall +Files patched: Makefile.SH embed.h ext/Safe/Safe.pm keywords.h opcode.h opcode.h opcode.pl perly.c perly.c.diff perly.y pp_hot.c t/lib/safe.t vms/perly_c.vms + +NETaa15219: Make *x=\*y do like *x=*y +From: Chip Salzenberg +Files patched: sv.c + Applied suggested patch. + +NETaa15221: Indigestion with Carp::longmess and big eval '...'s +From: Tim Bunce +Files patched: lib/Carp.pm + Applied suggested patch. + +NETaa15222: VERSION patch for standard extensions +From: Paul Marquess +Files patched: ext/DB_File/Makefile.PL ext/DynaLoader/DynaLoader.pm ext/DynaLoader/Makefile.PL ext/Fcntl/Fcntl.pm ext/Fcntl/Makefile.PL ext/GDBM_File/GDBM_File.pm ext/GDBM_File/Makefile.PL ext/NDBM_File/Makefile.PL ext/NDBM_File/NDBM_File.pm ext/ODBM_File/Makefile.PL ext/ODBM_File/ODBM_File.pm ext/POSIX/Makefile.PL ext/POSIX/POSIX.pm ext/SDBM_File/Makefile.PL ext/SDBM_File/SDBM_File.pm ext/Safe/Makefile.PL ext/Safe/Safe.pm ext/Socket/Makefile.PL + Applied suggested patch. + +NETaa15222: VERSION patch for standard extensions (reprise) +Files patched: ext/DB_File/DB_File.pm ext/DynaLoader/DynaLoader.pm ext/Fcntl/Fcntl.pm ext/GDBM_File/GDBM_File.pm ext/NDBM_File/NDBM_File.pm ext/ODBM_File/ODBM_File.pm ext/POSIX/POSIX.pm ext/SDBM_File/SDBM_File.pm ext/Safe/Safe.pm ext/Socket/Socket.pm + (same) + +NETaa15227: $i < 10000 should optimize to integer op +From: Larry Wall +Files patched: op.c op.c + The program + + for ($i = 0; $i < 100000; $i++) { + push @foo, $i; + } + + takes about one quarter the memory if the optimizer decides that it can + use an integer < comparison rather than floating point. It now does so + if one side is an integer constant and the other side a simple variable. + This should really help some of our benchmarks. You can still force a + floating point comparison by using 100000.0 instead. + +NETaa15228: CPerl-mode patch +From: Ilya Zakharevich +Files patched: emacs/cperl-mode.el + Applied suggested patch. + +NETaa15231: Symbol::qualify() +From: Chip Salzenberg +Files patched: ext/FileHandle/FileHandle.pm gv.c lib/SelectSaver.pm lib/Symbol.pm pp_hot.c + Applied suggested patch. + +NETaa15236: select select broke under use strict +From: Chip Salzenberg +Files patched: op.c + Instead of inventing a new bit, I just turned off the HINT_STRICT_REFS bit. + I don't think it's worthwhile distinguishing between qualified or unqualified + names to select. + +NETaa15237: use vars +From: Larry Wall +Files patched: MANIFEST gv.c lib/subs.pm lib/vars.pm sv.c + +NETaa15240: keep op names _and_ descriptions +From: Chip Salzenberg +Files patched: doio.c embed.h ext/Safe/Safe.pm ext/Safe/Safe.xs global.sym op.c opcode.h opcode.pl scope.c sv.c + Applied suggested patch. + +NETaa15259: study doesn't unset on string modification +From: Larry Wall +Files patched: mg.c pp.c + Piggybacked on m//g unset magic to unset the study too. + +NETaa15276: pick a better initial cxstack_max +From: Chip Salzenberg +Files patched: perl.c + Added fudge in, and made it calculate how many it could fit into (most of) 8K, + to avoid getting 16K of Kingsley malloc. + +NETaa15287: numeric comparison optimization adjustments +From: Clark Cooper +Files patched: op.c + Applied patch suggested by Chip, with liberalization to >= and <=. + +NETaa15299: couldn't eval string containing pod or __DATA__ +From: Andreas Koenig +Also: Gisle Aas +Files patched: toke.c + Basically, eval didn't know how to bypass pods correctly. + +NETaa15300: sv_backoff problems +From: Paul Marquess +Also: mtr +Also: Chip Salzenberg +Files patched: op.c sv.c sv.h + Applied suggested patch. + +NETaa15312: Avoid fclose(NULL) +From: Chip Salzenberg +Files patched: toke.c + Applied suggested patch. + +NETaa15318: didn't set up perl_init_i18nl14n for export +From: Ilya Zakharevich +Files patched: perl_exp.SH + Applied suggested patch. + +NETaa15331: File::Path::rmtree followed symlinks +From: Andreas Koenig +Files patched: lib/File/Path.pm + Added suggested patch, except I did + + if (not -l $root and -d _) { + + for efficiency, since if -d is true, the -l already called lstat on it. + +NETaa15339: sv_gets() didn't reset count +From: alanburlison@unn.unisys.com +Files patched: sv.c + Applied suggested patch. + +NETaa15341: differentiated importation of different types +From: Chip Salzenberg +Files patched: gv.c gv.h op.c perl.c pp.c pp_ctl.c sv.c sv.h toke.c + Applied suggested patch. + +NETaa15342: Consistent handling of e_{fp,tmpname} +From: Chip Salzenberg +Files patched: perl.c pp_ctl.c util.c + Applied suggested patch. + +NETaa15344: Safe gets confused about malloc on AIX +From: Tim Bunce +Files patched: ext/Safe/Safe.xs + Applied suggested patch. + +NETaa15348: -M upgrade +From: Tim Bunce +Files patched: perl.c pod/perlrun.pod + Applied suggested patch. + +NETaa15369: change in split optimization broke scalar context +From: Ulrich Pfeifer +Files patched: op.c + The earlier patch to make the split optimization pay attention to + OPpASSIGN_COMMON rearranged how the syntax tree is constructed, but kept + the wrong context flags. This causes pp_split() do do the wrong thing. + +NETaa15423: can't do subversion numbering because of %5.3f assumptions +From: Andy Dougherty +Files patched: configpm patchlevel.h perl.c perl.h pp_ctl.c + Removed the %5.3f assumptions where appropriate. patchlevel.h now + defines SUBVERSION, which if greater than 0 indicates a development version. + +NETaa15424: Sigsetjmp patch +From: Kenneth Albanowski +Files patched: Configure config_h.SH op.c perl.c perl.h pp_ctl.c util.c + Applied suggested patch. + +Needed to make install paths absolute. +Files patched: installperl + +h2xs 1.14 +Files patched: utils/h2xs.PL + +makedir() looped on a symlink to a directory. +Files patched: installperl + +xsubpp 1.932 +Files patched: lib/ExtUtils/xsubpp + +------------- +Version 5.001 +------------- + +Nearly all the changes for 5.001 were bug fixes of one variety or another, +so here's the bug list, along with the "resolution" for each of them. If +you wish to correspond about any of them, please include the bug number. + +There were a few that can be construed as enhancements: + NETaa13059: now warns of use of \1 where $1 is necessary. + NETaa13512: added $SIG{__WARN__} and $SIG{__DIE__} hooks + NETaa13520: added closures + NETaa13530: scalar keys now resets hash iterator + NETaa13641: added Tim's fancy new import whizbangers + NETaa13710: cryptswitch needed to be more "useable" + NETaa13716: Carp now allows multiple packages to be skipped out of + NETaa13716: now counts imported routines as "defined" for redef warnings + (and, of course, much of the stuff from the perl5-porters) + +NETaa12974: README incorrectly said it was a pre-release. +Files patched: README + +NETaa13033: goto pushed a bogus scope on the context stack. +From: Steve Vinoski +Files patched: pp_ctl.c + The goto operator pushed an extra bogus scope onto the context stack. (This + often didn't matter, since many things pop extra unrecognized scopes off.) + +NETaa13034: tried to get valid pointer from undef. +From: Castor Fu +Also: Achille Hui, the Day Dreamer +Also: Eric Arnold +Files patched: pp_sys.c + Now treats undef specially, and calls SvPV_force on any non-numeric scalar + value to get a real pointer to somewhere. + +NETaa13035: included package info with filehandles. +From: Jack Shirazi - BIU +Files patched: pp_hot.c pp_sys.c + Now passes a glob to filehandle methods to keep the package info intact. + +NETaa13048: didn't give strict vars message on every occurrence. +From: Doug Campbell +Files patched: gv.c + It now complains about every occurrence. (The bug resulted from an + ill-conceived attempt to suppress a duplicate error message in a + suboptimal fashion.) + +NETaa13052: test for numeric sort sub return value fooled by taint magic. +From: Peter Jaspers-Fayer +Files patched: pp_ctl.c sv.h + The test to see if the sort sub return value was numeric looked at the + public flags rather than the private flags of the SV, so taint magic + hid that info from the sort. + +NETaa13053: forced a2p to use byacc +From: Andy Dougherty +Files patched: MANIFEST x2p/Makefile.SH x2p/a2p.c + a2p.c is now pre-byacced and shipped with the kit. + +NETaa13055: misnamed constant in previous patch. +From: Conrad Augustin +Files patched: op.c op.h toke.c + The tokener translates $[ to a constant, but with a special marking in case + the constant gets assigned to or localized. Unfortunately, the marking + was done with a combination of OPf_SPECIAL and OPf_MOD that was easily + spoofed. There is now a private OPpCONST_ARYLEN flag for this purpose. + +NETaa13055: use of OPf_SPECIAL for $[ lvaluehood was too fragile. +Files patched: op.c op.h toke.c + (same) + +NETaa13056: convert needs to throw away any number info on its list. +From: Jack Shirazi - BIU +Files patched: op.c + The listiness of the argument list leaked out to the subroutine call because + of how prepend_elem and append_elem reuse an existing list. The convert() + routine just needs to discard any listiness it finds on its argument. + +NETaa13058: AUTOLOAD shouldn't assume size of @_ is meaningful. +From: Florent Guillaume +Files patched: ext/DB_File/DB_File.pm ext/Fcntl/Fcntl.pm ext/GDBM_File/GDBM_File.pm ext/Socket/Socket.pm h2xs.SH + I just deleted the optimization, which is silly anyway since the eventual + subroutine definition is cached. + +NETaa13059: now warns of use of \1 where $1 is necessary. +From: Gustaf Neumann +Files patched: toke.c + Now says + + Can't use \1 to mean $1 in expression at foo line 2 + + along with an explanation in perldiag. + +NETaa13060: no longer warns on attempt to read <> operator's transition state. +From: Chaim Frenkel +Files patched: pp_hot.c + No longer warns on <> operator's transitional state. + +NETaa13140: warning said $ when @ would be more appropriate. +From: David J. MacKenzie +Files patched: op.c pod/perldiag.pod + Now says + + (Did you mean $ or @ instead of %?) + + and added more explanation to perldiag. + +NETaa13149: was reading freed memory to make incorrect error message. +Files patched: pp_ctl.c + It was reading freed memory to make an error message that would be + incorrect in any event because it had the inner filename rather than + the outer. + +NETaa13149: confess was sometimes less informative than croak +From: Jack Shirazi +Files patched: lib/Carp.pm + (same) + +NETaa13150: stderr needs to be STDERR in package +From: Jack Shirazi +Files patched: lib/File/CheckTree.pm + Also fixed pl2pm to translate the filehandles to uppercase. + +NETaa13150: uppercases stdin, stdout and stderr +Files patched: pl2pm + (same) + +NETaa13154: array assignment didn't notice package magic. +From: Brian Reichert +Files patched: pp_hot.c + The list assignment operator looked for only set magic, but set magic is + only on the elements of a magical hash, not on the hash as a whole. I made + the operator look for any magic at all on the target array or hash. + +NETaa13155: &DB::DB left trash on the stack. +From: Thomas Koenig +Files patched: lib/perl5db.pl pp_ctl.c + The call by pp_dbstate() to &DB::DB left trash on the stack. It now + calls DB in list context, and DB returns (). + +NETaa13156: lexical variables didn't show up in debugger evals. +From: Joergen Haegg +Files patched: op.c + The code that searched back up the context stack for the lexical scope + outside the eval only partially took into consideration that there + might be extra debugger subroutine frames that shouldn't be used, and + ended up comparing the wrong statement sequence number to the range of + valid sequence numbers for the scope of the lexical variable. (There + was also a bug fixed in passing that caused the scope of lexical to go + clear to the end of the subroutine even if it was within an inner block.) + +NETaa13157: any request for autoloaded DESTROY should create a null one. +From: Tom Christiansen +Files patched: lib/AutoLoader.pm + If DESTROY.al is not located, it now creates sub DESTROY {} automatically. + +NETaa13158: now preserves $@ around destructors while leaving eval. +From: Tim Bunce +Files patched: pp_ctl.c + Applied supplied patch, except the whole second hunk can be replaced with + + sv_insert(errsv, 0, 0, message, strlen(message)); + +NETaa13160: clarified behavior of split without arguments +From: Harry Edmon +Files patched: pod/perlfunc.pod + Clarified the behavior of split without arguments. + +NETaa13162: eval {} lost list/scalar context +From: Dov Grobgeld +Files patched: op.c + LEAVETRY didn't propagate number to ENTERTRY. + +NETaa13163: clarified documentation of foreach using my variable +From: Tom Christiansen +Files patched: pod/perlsyn.pod + Explained that foreach using a lexical is still localized. + +NETaa13164: the dot detector for the end of formats was over-rambunctious. +From: John Stoffel +Files patched: toke.c + The dot detector for the end of formats was over-rambunctious. It would + pick up any dot that didn't have a space in front of it. + +NETaa13165: do {} while 1 never linked outer block into next chain. +From: Gisle Aas +Files patched: op.c + When the conditional of do {} while 1; was optimized away, it confused the + postfix order construction so that the block that ordinarily sits around the + whole loop was never executed. So when the loop tried to unstack between + iterations, it got the wrong context, and blew away the lexical variables + of the outer scope. Fixed it by introducing a NULL opcode that will be + optimized away later. + +NETaa13167: coercion was looking at public bits rather than private bits. +From: Randal L. Schwartz +Also: Thomas Riechmann +Also: Shane Castle +Files patched: sv.c + There were some bad ifdefs around the various varieties of set*id(). In + addition, tainting was interacting badly with assignment to $> because + sv_2iv() was examining SvPOK rather than SvPOKp, and so couldn't coerce + a string uid to an integer one. + +NETaa13167: had some ifdefs wrong on set*id. +Files patched: mg.c pp_hot.c + (same) + +NETaa13168: relaxed test for comparison of new and old fds +From: Casper H.S. Dik +Files patched: t/lib/posix.t + I relaxed the comparison to just check that the new fd is greater. + +NETaa13169: autoincrement can corrupt scalar value state. +From: Gisle Aas +Also: Tom Christiansen +Files patched: sv.c + It assumed a PV didn't need to be upgraded to become an NV. + +NETaa13169: previous patch could leak a string pointer. +Files patched: sv.c + (same) + +NETaa13170: symbols missing from global.sym +From: Tim Bunce +Files patched: global.sym + Applied suggested patch. + +NETaa13171: \\ in <<'END' shouldn't reduce to \. +From: Randal L. Schwartz +Files patched: toke.c + <<'END' needed to bypass ordinary single-quote processing. + +NETaa13172: 'use integer' turned off magical autoincrement. +From: Erich Rickheit KSC +Files patched: pp.c pp_hot.c + The integer versions of the increment and decrement operators were trying too + hard to be efficient. + +NETaa13172: deleted duplicate increment and decrement code +Files patched: opcode.h opcode.pl pp.c + (same) + +NETaa13173: install should make shared libraries executable. +From: Brian Grossman +Also: Dave Nadler +Also: Eero Pajarre +Files patched: installperl + Now gives permission 555 to any file ending with extension specified by $dlext. + +NETaa13176: ck_rvconst didn't free the const it used up. +From: Nick Duffek +Files patched: op.c + I checked in many random memory leaks under this bug number, since it + was an eval that brought many of them out. + +NETaa13176: didn't delete XRV for temp ref of destructor. +Files patched: sv.c + (same) + +NETaa13176: didn't delete op_pmshort in matching operators. +Files patched: op.c + (same) + +NETaa13176: eval leaked the name of the eval. +Files patched: scope.c + (same) + +NETaa13176: gp_free didn't free the format. +Files patched: gv.c + (same) + +NETaa13176: minor leaks in loop exits and constant subscript optimization. +Files patched: op.c + (same) + +NETaa13176: plugged some duplicate struct allocation memory leaks. +Files patched: perl.c + (same) + +NETaa13176: sv_clear of an FM didn't clear anything. +Files patched: sv.c + (same) + +NETaa13176: tr/// didn't mortalize its return value. +Files patched: pp.c + (same) + +NETaa13177: SCOPE optimization hid line number info +From: David J. MacKenzie +Also: Hallvard B Furuseth +Files patched: op.c + Every pass on the syntax tree has to keep track of the current statement. + Unfortunately, the single-statement block was optimized into a single + statement between the time the variable was parsed and the time the + void code scan was done, so that pass didn't see the OP_NEXTSTATE + operator, because it has been optimized to an OP_NULL. + + Fortunately, null operands remember what they were, so it was pretty easy + to make it set the correct line number anyway. + +NETaa13178: some linux doesn't handle nm well +From: Alan Modra +Files patched: hints/linux.sh + Applied supplied patch. + +NETaa13180: localized slice now pre-extends array +From: Larry Schuler +Files patched: pp.c + A localized slice now pre-extends its array to avoid reallocation during + the scope of the local. + +NETaa13181: m//g didn't keep track of whether previous match matched null. +From: "philippe.verdret" +Files patched: mg.h pp_hot.c + A pattern isn't allowed to match a null string in the same place twice in + a row. m//g wasn't keeping track of whether the previous match matched + the null string. + +NETaa13182: now includes whitespace as a regexp metacharacter. +From: Larry Wall +Files patched: toke.c + scan_const() now counts " \t\n\r\f\v" as metacharacters when scanning a pattern. + +NETaa13183: sv_setsv shouldn't try to clone an object. +From: Peter Gordon +Files patched: sv.c + The sv_mortalcopy() done by the return in STORE called sv_setsv(), + which cloned the object. sv_setsv() shouldn't be in the business of + cloning objects. + +NETaa13184: bogus warning on quoted signal handler name removed. +From: Dan Carson +Files patched: toke.c + Now doesn't complain unless the first non-whitespace character after the = + is an alphabetic character. + +NETaa13186: now croaks on chop($') +From: Casper H.S. Dik +Files patched: doop.c + Now croaks on chop($') and such. + +NETaa13187: "${foo::bar}" now counts as mere delimitation, not as a bareword. +From: Jay Rogers +Files patched: toke.c + "${foo::bar}" now counts as mere delimitation, not as a bareword inside a + reference block. + +NETaa13188: for backward compatibility, looks for "perl -" before "perl". +From: Russell Mosemann +Files patched: toke.c + Now allows non-whitespace characters on the #! line between the "perl" + and the "-". + +NETaa13188: now allows non-whitespace after #!...perl before switches. +Files patched: toke.c + (same) + +NETaa13189: derivative files need to be removed before recreation +From: Simon Leinen +Also: Dick Middleton +Also: David J. MacKenzie +Files patched: embed_h.sh x2p/Makefile.SH + Fixed various little nits as suggested in several messages. + +NETaa13190: certain assignments can spoof pod directive recognizer +From: Ilya Zakharevich +Files patched: toke.c + The lexer now only recognizes pod directives where a statement is expected. + +NETaa13194: now returns undef when there is no curpm. +From: lusol@Dillon.CC.Lehigh.EDU +Files patched: mg.c + Since there was no regexp prior to the "use", it was returning whatever the + last successful match was within the "use", because there was no current + regexp, so it treated it as a normal variable. It now returns undef. + +NETaa13195: semop had one S too many. +From: Joachim Huober +Files patched: opcode.pl + The entry in opcode.pl had one too many S's. + +NETaa13196: always assumes it's a Perl script if -c is used. +From: Dan Carson +Files patched: toke.c + It now will assume it's a Perl script if the -c switch is used. + +NETaa13197: changed implicit -> message to be more understandable. +From: Bruce Barnett +Files patched: op.c pod/perldiag.pod + I changed the error message to be more understandable. It now says + + Can't use subscript on sort... + + +NETaa13201: added OPpCONST_ENTERED flag to properly enter filehandle symbols. +From: E. Jay Berkenbilt +Also: Tom Christiansen +Files patched: op.c op.h toke.c + The grammatical reduction of a print statement didn't properly count + the filehandle as a symbol reference because it couldn't distinguish + between a symbol entered earlier in the program and a symbol entered + for the first time down in the lexer. + +NETaa13203: README shouldn't mention uperl.o any more. +From: Anno Siegel +Files patched: README + +NETaa13204: .= shouldn't warn on uninitialized target. +From: Pete Peterson +Files patched: pp_hot.c + No longer warns on uninitialized target of .= operator. + +NETaa13206: handy macros in XSUB.h +From: Tim Bunce +Files patched: XSUB.h + Added suggested macros. + +NETaa13228: commonality checker didn't treat lexicals as variables. +From: mcook@cognex.com +Files patched: op.c opcode.pl + The list assignment operator tries to avoid unnecessary copies by doing the + assignment directly if there are no common variables on either side of the + equals. Unfortunately, the code that decided that only recognized references + to dynamic variables, not lexical variables. + +NETaa13229: fixed sign stuff for complement, integer coercion. +From: Larry Wall +Files patched: perl.h pp.c sv.c + Fixed ~0 and integer coercions. + +NETaa13230: no longer tries to reuse scratchpad temps if tainting in effect. +From: Luca Fini +Files patched: op.c + I haven't reproduced it, but I believe the problem is the reuse of scratchpad + temporaries between statements. I've made it not try to reuse them if + tainting is in effect. + +NETaa13231: *foo = *bar now prevents typo warnings on "foo" +From: Robin Barker +Files patched: sv.c + Aliasing of the form *foo = *bar is now protected from the typo warnings. + Previously only the *foo = \$bar form was. + +NETaa13235: require BAREWORD now introduces package name immediately. +From: Larry Wall +Files patched: toke.c + require BAREWORD now introduces package name immediately. This lets the + method intuit code work right even though the require hasn't actually run + yet. + +NETaa13289: didn't calculate correctly using arybase. +From: Jared Rhine +Files patched: pp.c pp_hot.c + The runtime code didn't use curcop->cop_arybase correctly. + +NETaa13301: store now throws exception on error +From: Barry Friedman +Files patched: ext/GDBM_File/GDBM_File.xs ext/NDBM_File/NDBM_File.xs ext/ODBM_File/ODBM_File.xs ext/SDBM_File/SDBM_File.xs + Changed warn to croak in ext/*DBM_File/*.xs. + +NETaa13302: ctime now takes Time_t rather than Time_t*. +From: Rodger Anderson +Files patched: ext/POSIX/POSIX.xs + Now declares a Time_t and takes the address of that in CODE. + +NETaa13302: shorter way to do this patch +Files patched: ext/POSIX/POSIX.xs + (same) + +NETaa13304: could feed too large $@ back into croak, whereupon it croaked. +From: Larry Wall +Files patched: perl.c + callist() could feed $@ back into croak with more than a bare %s. (croak() + handles long strings with a bare %s okay.) + +NETaa13305: compiler misoptimized RHS to outside of s/a/print/e +From: Brian S. Cashman +Files patched: op.c + The syntax tree was being misconstructed because the compiler felt that + the RHS was invariant, so it did it outside the s///. + +NETaa13314: assigning mortal to lexical leaks +From: Larry Wall +Files patched: sv.c + In stealing strings, sv_setsv was checking SvPOK to see if it should free + the destination string. It should have been checking SvPVX. + +NETaa13316: wait4pid now recalled when errno == EINTR +From: Robert J. Pankratz +Files patched: pp_sys.c util.c + system() and the close() of a piped open now recall wait4pid if it returned + prematurely with errno == EINTR. + +NETaa13329: needed to localize taint magic +From: Brian Katzung +Files patched: sv.c doio.c mg.c pp_hot.c pp_sys.c scope.c taint.c + Taint magic is now localized better, though I had to resort to a kludge + to allow a value to be both tainted and untainted simultaneously during + the assignment of + + local $foo = $_[0]; + + when $_[0] is a reference to the variable $foo already. + +NETaa13341: clarified interaction of AnyDBM_File::ISA and "use" +From: Ian Phillipps +Files patched: pod/modpods/AnyDBMFile.pod + The doc was misleading. + +NETaa13342: grep and map with block would enter block but never leave it. +From: Ian Phillipps +Files patched: op.c + The compiler use some sort-checking code to handle the arguments of + grep and map. Unfortunately, this wiped out the block exit opcode while + leaving the block entry opcode. This doesn't matter to sort, but did + matter to grep and map. It now leave the block entry intact. + + The reason it worked without the my is because the block entry and exit + were optimized away to an OP_SCOPE, which it doesn't matter if it's there + or not. + +NETaa13343: goto needed to longjmp when in a signal handler. +From: Robert Partington +Files patched: pp_ctl.c + goto needed to longjmp() when in a signal handler to get back into the + right run() context. + + +NETaa13344: strict vars shouldn't apply to globs or filehandles. +From: Andrew Wilcox +Files patched: gv.c + Filehandles and globs will be excepted from "strict vars", so that you can + do the standard Perl 4 trick of + + use strict; + sub foo { + local(*IN); + open(IN,"file"); + } + + +NETaa13345: assert.pl didn't use package DB +From: Hans Mulder +Files patched: lib/assert.pl + Now it does. + +NETaa13348: av_undef didn't free scalar representing $#foo. +From: David Filo +Files patched: av.c + av_undef didn't free scalar representing $#foo. + +NETaa13349: sort sub accumulated save stack entries +From: David Filo +Files patched: pp_ctl.c + COMMON only gets set if assigning to @_, which is reasonable. Most of the + problem was a memory leak. + +NETaa13351: didn't treat indirect filehandles as references. +From: Andy Dougherty +Files patched: op.c + Now produces + + Can't use an undefined value as a symbol reference at ./foo line 3. + + +NETaa13352: OP_SCOPE allocated as UNOP rather than LISTOP. +From: Andy Dougherty +Files patched: op.c + +NETaa13353: scope() didn't release filegv on OP_SCOPE optimization. +From: Larry Wall +Files patched: op.c + When scope() nulled out a NEXTSTATE, it didn't release its filegv reference. + +NETaa13355: hv_delete now avoids useless mortalcopy +From: Larry Wall +Files patched: hv.c op.c pp.c pp_ctl.c proto.h scope.c util.c + hv_delete now avoids useless mortalcopy. + + +NETaa13359: comma operator section missing its heading +From: Larry Wall +Files patched: pod/perlop.pod + +NETaa13359: random typo +Files patched: pod/perldiag.pod + +NETaa13360: code to handle partial vec values was bogus. +From: Conrad Augustin +Files patched: pp.c + The code that Mark J. added a long time ago to handle values that were partially + off the end of the string was incorrect. + +NETaa13361: made it not interpolate inside regexp comments +From: Martin Jost +Files patched: toke.c + To avoid surprising people, it no longer interpolates inside regexp + comments. + +NETaa13362: ${q[1]} should be interpreted like it used to +From: Hans Mulder +Files patched: toke.c + Now resolves ${keyword[1]} to $keyword[1] and warns if -w. Likewise for {}. + +NETaa13363: meaning of repeated search chars undocumented in tr/// +From: Stephen P. Potter +Files patched: pod/perlop.pod + Documented that repeated characters use the first translation given. + +NETaa13365: if closedir fails, don't try it again. +From: Frank Crawford +Files patched: pp_sys.c + Now does not attempt to closedir a second time. + +NETaa13366: can't do block scope optimization on $1 et al when tainting. +From: Andrew Vignaux +Files patched: toke.c + The tainting mechanism assumes that every statement starts out + untainted. Unfortunately, the scope removal optimization for very + short blocks removed the statementhood of statements that were + attempting to read $1 as an untainted value, with the effect that $1 + appeared to be tainted anyway. The optimization is now disabled when + tainting and the block contains $1 (or equivalent). + +NETaa13366: fixed this a better way in toke.c. +Files patched: op.c + (same) + +NETaa13366: need to disable scope optimization when tainting. +Files patched: op.c + (same) + +NETaa13367: Did a SvCUR_set without nulling out final char. +From: "Rob Henderson" +Files patched: doop.c pp.c pp_sys.c + When do_vop set the length on its result string it neglected to null-terminate + it. + +NETaa13368: bigrat::norm sometimes chucked sign +From: Greg Kuperberg +Files patched: lib/bigrat.pl + The normalization routine was assuming that the gcd of two numbers was + never negative, and based on that assumption managed to move the sign + to the denominator, where it was deleted on the assumption that the + denominator is always positive. + +NETaa13368: botched previous patch +Files patched: lib/bigrat.pl + (same) + +NETaa13369: # is now a comment character, and \# should be left for regcomp. +From: Simon Parsons +Files patched: toke.c + It was not skipping the comment when it skipped the white space, and constructed + an opcode that tried to match a null string. Unfortunately, the previous + star tried to use the first character of the null string to optimize where + to recurse, so it never matched. + +NETaa13369: comment after regexp quantifier induced non-match. +Files patched: regcomp.c + (same) + +NETaa13370: some code assumed SvCUR was of type int. +From: Spider Boardman +Files patched: pp_sys.c + Did something similar to the proposed patch. I also fixed the problem that + it assumed the type of SvCUR was int. And fixed get{peer,sock}name the + same way. + +NETaa13375: sometimes dontbother wasn't added back into strend. +From: Jamshid Afshar +Files patched: regexec.c + When the /g modifier was used, the regular expression code would calculate + the end of $' too short by the minimum number of characters the pattern could + match. + +NETaa13375: sv_setpvn now disallows negative length. +Files patched: sv.c + (same) + +NETaa13376: suspected indirect objecthood prevented recognition of lexical. +From: Gisle.Aas@nr.no +Files patched: toke.c + When $data[0] is used in a spot that might be an indirect object, the lexer + was getting confused over the rule that says the $data in $$data[0] isn't + an array element. (The lexer uses XREF state for both indirect objects + and for variables used as names.) + +NETaa13377: -I processesing ate remainder of #! line. +From: Darrell Schiebel +Files patched: perl.c + I made the -I processing in moreswitches look for the end of the string, + delimited by whitespace. + +NETaa13379: ${foo} now treated the same outside quotes as inside +From: Hans Mulder +Files patched: toke.c + ${bareword} is now treated the same outside quotes as inside. + +NETaa13379: previous fix for this bug was botched +Files patched: toke.c + (same) + +NETaa13381: TEST should check for perl link +From: Andy Dougherty +Files patched: t/TEST + die "You need to run \"make test\" first to set things up.\n" unless -e 'perl'; + + +NETaa13384: fixed version 0.000 botch. +From: Larry Wall +Files patched: installperl + +NETaa13385: return 0 from required file loses message +From: Malcolm Beattie +Files patched: pp_ctl.c + Works right now. + +NETaa13387: added pod2latex +From: Taro KAWAGISHI +Files patched: MANIFEST pod/pod2latex + Added most recent copy to pod directory. + +NETaa13388: constant folding now prefers integer results over double +From: Ilya Zakharevich +Files patched: op.c + Constant folding now prefers integer results over double. + +NETaa13389: now treats . and exec as shell metathingies +From: Hans Mulder +Files patched: doio.c + Now treats . and exec as shell metathingies. + +NETaa13395: eval didn't check taintedness. +From: Larry Wall +Files patched: pp_ctl.c + +NETaa13396: $^ coredumps at end of string +From: Paul Rogers +Files patched: toke.c + The scan_ident() didn't check for a null following $^. + +NETaa13397: improved error messages when operator expected +From: Larry Wall +Files patched: toke.c + Added message (Do you need to predeclare BAR?). Also fixed the missing + semicolon message. + +NETaa13399: cleanup by Andy +From: Larry Wall +Files patched: Changes Configure Makefile.SH README cflags.SH config.H config_h.SH deb.c doop.c dump.c ext/DB_File/DB_File.pm ext/DB_File/DB_File.xs ext/DynaLoader/DynaLoader.pm ext/Fcntl/Fcntl.pm ext/GDBM_File/GDBM_File.pm ext/POSIX/POSIX.pm ext/SDBM_File/sdbm/sdbm.h ext/Socket/Socket.pm ext/util/make_ext h2xs.SH hints/aix.sh hints/bsd386.sh hints/dec_osf.sh hints/esix4.sh hints/freebsd.sh hints/irix_5.sh hints/next_3_2.sh hints/sunos_4_1.sh hints/svr4.sh hints/ultrix_4.sh installperl lib/AutoSplit.pm lib/Cwd.pm lib/ExtUtils/MakeMaker.pm lib/ExtUtils/xsubpp lib/Term/Cap.pm mg.c miniperlmain.c perl.c perl.h perl_exp.SH pod/Makefile pod/perldiag.pod pod/pod2html pp.c pp_ctl.c pp_hot.c pp_sys.c proto.h sv.h t/re_tests util.c x2p/Makefile.SH x2p/a2p.h x2p/a2py.c x2p/handy.h x2p/hash.c x2p/hash.h x2p/str.c x2p/str.h x2p/util.c x2p/util.h x2p/walk.c + +NETaa13399: cleanup from Andy +Files patched: MANIFEST + +NETaa13399: configuration cleanup +Files patched: Configure Configure MANIFEST MANIFEST Makefile.SH Makefile.SH README config.H config.H config_h.SH config_h.SH configpm ext/DynaLoader/DynaLoader.pm ext/DynaLoader/dl_hpux.xs ext/NDBM_File/Makefile.PL ext/ODBM_File/Makefile.PL ext/util/make_ext handy.h hints/aix.sh hints/hpux_9.sh hints/hpux_9.sh hints/irix_4.sh hints/linux.sh hints/mpeix.sh hints/next_3_2.sh hints/solaris_2.sh hints/svr4.sh installperl installperl lib/AutoSplit.pm lib/ExtUtils/MakeMaker.pm lib/ExtUtils/MakeMaker.pm lib/ExtUtils/xsubpp lib/Getopt/Long.pm lib/Text/Tabs.pm makedepend.SH makedepend.SH mg.c op.c perl.h perl_exp.SH pod/perl.pod pod/perldiag.pod pod/perlsyn.pod pod/pod2man pp_sys.c proto.h proto.h unixish.h util.c util.c vms/config.vms writemain.SH x2p/a2p.h x2p/a2p.h x2p/a2py.c x2p/a2py.c x2p/handy.h x2p/util.c x2p/walk.c x2p/walk.c + +NETaa13399: new files from Andy +Files patched: ext/DB_File/Makefile.PL ext/DynaLoader/Makefile.PL ext/Fcntl/Makefile.PL ext/GDBM_File/Makefile.PL ext/NDBM_File/Makefile.PL ext/ODBM_File/Makefile.PL ext/POSIX/Makefile.PL ext/SDBM_File/Makefile.PL ext/SDBM_File/sdbm/Makefile.PL ext/Socket/Makefile.PL globals.c hints/convexos.sh hints/irix_6.sh + +NETaa13399: patch0l from Andy +Files patched: Configure MANIFEST Makefile.SH config.H config_h.SH ext/DB_File/Makefile.PL ext/GDBM_File/Makefile.PL ext/NDBM_File/Makefile.PL ext/POSIX/POSIX.xs ext/SDBM_File/sdbm/Makefile.PL ext/util/make_ext h2xs.SH hints/next_3_2.sh hints/solaris_2.sh hints/unicos.sh installperl lib/Cwd.pm lib/ExtUtils/MakeMaker.pm makeaperl.SH vms/config.vms x2p/util.c x2p/util.h + +NETaa13399: stuff from Andy +Files patched: Configure MANIFEST Makefile.SH configpm hints/dec_osf.sh hints/linux.sh hints/machten.sh lib/ExtUtils/MakeMaker.pm util.c + +NETaa13399: Patch 0k from Andy +Files patched: Configure MANIFEST Makefile.SH config.H config_h.SH hints/dec_osf.sh hints/mpeix.sh hints/next_3_0.sh hints/ultrix_4.sh installperl lib/ExtUtils/MakeMaker.pm lib/File/Path.pm makeaperl.SH minimod.PL perl.c proto.h vms/config.vms vms/ext/MM_VMS.pm x2p/a2p.h + +NETaa13399: Patch 0m from Andy +Files patched: Configure MANIFEST Makefile.SH README config.H config_h.SH ext/DynaLoader/README ext/POSIX/POSIX.xs ext/SDBM_File/sdbm/sdbm.h ext/util/extliblist hints/cxux.sh hints/linux.sh hints/powerunix.sh lib/ExtUtils/MakeMaker.pm malloc.c perl.h pp_sys.c util.c + +NETaa13400: pod2html update from Bill Middleton +From: Larry Wall +Files patched: pod/pod2html + +NETaa13401: Boyer-Moore code attempts to compile string longer than 255. +From: Kyriakos Georgiou +Files patched: util.c + The Boyer-Moore table uses unsigned char offsets, but the BM compiler wasn't + rejecting strings longer than 255 chars, and was miscompiling them. + +NETaa13403: missing a $ on variable name +From: Wayne Scott +Files patched: installperl + Yup, it was missing. + +NETaa13406: didn't wipe out dead match when proceeding to next BRANCH +From: Michael P. Clemens +Files patched: regexec.c + The code to check alternatives didn't invalidate backreferences matched by the + failed branch. + +NETaa13407: overload upgrade +From: owner-perl5-porters@nicoh.com +Also: Ilya Zakharevich +Files patched: MANIFEST gv.c lib/Math/BigInt.pm perl.h pod/perlovl.pod pp.c pp.h pp_hot.c sv.c t/lib/bigintpm.t t/op/overload.t + Applied supplied patch, and fixed bug induced by use of sv_setsv to do + a deep copy, since sv_setsv no longer copies objecthood. + +NETaa13409: sv_gets tries to grow string at EOF +From: Harold O Morris +Files patched: sv.c + Applied suggested patch, only two statements earlier, since the end code + also does SvCUR_set. + +NETaa13410: delaymagic did =~ instead of &= ~ +From: Andreas Schwab +Files patched: pp_hot.c + Applied supplied patch. + +NETaa13411: POSIX didn't compile under -DLEAKTEST +From: Frederic Chauveau +Files patched: ext/POSIX/POSIX.xs + Used NEWSV instead of newSV. + +NETaa13412: new version from Tony Sanders +From: Tony Sanders +Files patched: lib/Term/Cap.pm + Installed as Term::Cap.pm + +NETaa13413: regmust extractor needed to restart loop on BRANCH for (?:) to work +From: DESARMENIEN +Files patched: regcomp.c + The BRANCH skipper should have restarted the loop from the top. + +NETaa13414: the check for accidental list context was done after pm_short check +From: Michael H. Coen +Files patched: pp_hot.c + Moved check for accidental list context to before the pm_short optimization. + +NETaa13418: perlre.pod babbled nonsense about | in character classes +From: Philip Hazel +Files patched: pod/perlre.pod + Removed bogus brackets. Now reads: + Note however that "|" is interpreted as a literal with square brackets, + so if you write C<[fee|fie|foe]> you're really only matching C<[feio|]>. + +NETaa13419: need to document introduction of lexical variables +From: "Heading, Anthony" +Files patched: pod/perlfunc.pod + Now mentions that lexicals aren't introduced till after the current statement. + +NETaa13420: formats that overflowed a page caused endless top of forms +From: Hildo@CONSUL.NL +Files patched: pp_sys.c + If a record is too large to fit on a page, it now prints whatever will + fit and then calls top of form again on the remainder. + +NETaa13423: the code to do negative list subscript in scalar context was missing +From: Steve McDougall +Files patched: pp.c + The negative subscript code worked right in list context but not in scalar + context. In fact, there wasn't code to do it in the scalar context. + +NETaa13424: existing but undefined CV blocked inheritance +From: Spider Boardman +Files patched: gv.c + Applied supplied patch. + +NETaa13425: removed extra argument to croak +From: "R. Bernstein" +Files patched: regcomp.c + Removed extra argument. + +NETaa13427: added return types +From: "R. Bernstein" +Files patched: x2p/a2py.c + Applied suggested patch. + +NETaa13427: added static declarations +Files patched: x2p/walk.c + (same) + +NETaa13428: split was assuming that all backreferences were defined +From: Dave Schweisguth +Files patched: pp.c + split was assuming that all backreferences were defined. + +NETaa13430: hoistmust wasn't hoisting anchored shortcircuit's length +From: Tom Christiansen +Also: Rob Hooft +Files patched: toke.c + +NETaa13432: couldn't call code ref under debugger +From: Mike Fletcher +Files patched: op.c pp_hot.c sv.h + The debugging code assumed it could remember a name to represent a subroutine, + but anonymous subroutines don't have a name. It now remembers a CV reference + in that case. + +NETaa13435: 1' dumped core +From: Larry Wall +Files patched: toke.c + Didn't check a pointer for nullness. + +NETaa13436: print foo(123) didn't treat foo as subroutine +From: mcook@cognex.com +Files patched: toke.c + Now treats it as a subroutine rather than a filehandle. + +NETaa13437: &$::foo didn't think $::foo was a variable name +From: mcook@cognex.com +Files patched: toke.c + Now treats $::foo as a global variable. + +NETaa13439: referred to old package name +From: Tom Christiansen +Files patched: lib/Sys/Syslog.pm + Wasn't a strict refs problem after all. It was simply referring to package + syslog, which had been renamed to Sys::Syslog. + +NETaa13440: stat operations didn't know what to do with glob or ref to glob +From: mcook@cognex.com +Files patched: doio.c pp_sys.c + Now knows about the kinds of filehandles returned by FileHandle constructors + and such. + +NETaa13442: couldn't find name of copy of deleted symbol table entry +From: Spider Boardman +Files patched: gv.c gv.h + I did a much simpler fix. When gp_free notices that it's freeing the + master GV, it nulls out gp_egv. The GvENAME and GvESTASH macros know + to revert to gv if egv is null. + + This has the advantage of not creating a reference loop. + +NETaa13443: couldn't override an XSUB +From: William Setzer +Files patched: op.c + When the newSUB and newXS routines checked for whether the old sub was + defined, they only looked at CvROOT(cv), not CvXSUB(cv). + +NETaa13443: needed to do same thing in newXS +Files patched: op.c + (same) + +NETaa13444: -foo now doesn't warn unless sub foo is defined +From: Larry Wall +Files patched: toke.c + Made it not warn on -foo, unless there is a sub foo defined. + +NETaa13451: in scalar context, pp_entersub now guarantees one item from XSUB +From: Nick Gianniotis +Files patched: pp_hot.c + The pp_entersub routine now guarantees that an XSUB in scalar context + returns one and only one value. If there are fewer, it pushes undef, + and if there are more, it returns the last one. + +NETaa13457: now explicitly disallows printf format with 'n' or '*'. +From: lees@cps.msu.edu +Files patched: doop.c + Now says + + Use of n in printf format not supported at ./foo line 3. + + +NETaa13458: needed to call SvPOK_only() in pp_substr +From: Wayne Scott +Files patched: pp.c + Needed to call SvPOK_only() in pp_substr. + +NETaa13459: umask and chmod now warn about missing initial 0 even with paren +From: Andreas Koenig +Files patched: toke.c + Now skips parens as well as whitespace looking for argument. + +NETaa13460: backtracking didn't work on .*? because reginput got clobbered +From: Andreas Koenig +Files patched: regexec.c + When .*? did a probe of the rest of the string, it clobbered reginput, + so the next call to match a . tried to match the newline and failed. + +NETaa13475: \(@ary) now treats array as list of scalars +From: Tim Bunce +Files patched: op.c + The mod() routine now refrains from marking @ary as an lvalue if it's in parens + and is the subject of an OP_REFGEN. + +NETaa13481: accept buffer wasn't aligned good enough +From: Holger Bechtold +Also: Christian Murphy +Files patched: pp_sys.c + Applied suggested patch. + +NETaa13486: while (<>) now means while (defined($_ = <>)) +From: Jim Balter +Files patched: op.c pod/perlop.pod + while () now means while (defined($_ = )). + +NETaa13500: needed DESTROY in FileHandle +From: Tim Bunce +Files patched: ext/POSIX/POSIX.pm + Added DESTROY method. Also fixed ungensym to use POSIX:: instead of _POSIX. + Removed ungensym from close method, since DESTROY should do that now. + +NETaa13502: now complains if you use local on a lexical variable +From: Larry Wall +Files patched: op.c + Now says something like + + Can't localize lexical variable $var at ./try line 6. + +NETaa13512: added $SIG{__WARN__} and $SIG{__DIE__} hooks +From: Larry Wall +Files patched: embed.h gv.c interp.sym mg.c perl.h pod/perlvar.pod pp_ctl.c util.c Todo pod/perldiag.pod + +NETaa13514: statements before intro of lex var could see lex var +From: William Setzer +Files patched: op.c + When a lexical variable is declared, introduction is delayed until + the start of the next statement, so that any initialization code runs + outside the scope of the new variable. Thus, + + my $y = 3; + my $y = $y; + print $y; + + should print 3. Unfortunately, the declaration was marked with the + beginning location at the time that "my $y" was processed instead of + when the variable was introduced, so any embedded statements within + an anonymous subroutine picked up the wrong "my". The declaration + is now labelled correctly when the variable is actually introduced. + +NETaa13520: added closures +From: Larry Wall +Files patched: Todo cv.h embed.h global.sym gv.c interp.sym op.c perl.c perl.h pod/perlform.pod pp.c pp_ctl.c pp_hot.c sv.c sv.h toke.c + +NETaa13520: test to see if lexical works in a format now +Files patched: t/op/write.t + +NETaa13522: substitution couldn't be used on a substr() +From: Hans Mulder +Files patched: pp_ctl.c pp_hot.c + Changed pp_subst not to use sv_replace() anymore, which didn't handle lvalues + and was overkill anyway. Should be slightly faster this way too. + +NETaa13525: G_EVAL mode in perl_call_sv didn't return values right. +Files patched: perl.c + +NETaa13525: consolidated error message +From: Larry Wall +Files patched: perl.h toke.c + +NETaa13525: derived it +Files patched: perly.h + +NETaa13525: missing some values from embed.h +Files patched: embed.h + +NETaa13525: random cleanup +Files patched: MANIFEST Todo cop.h lib/TieHash.pm lib/perl5db.pl opcode.h patchlevel.h pod/perldata.pod pod/perlsub.pod t/op/ref.t toke.c + +NETaa13525: random cleanup +Files patched: pp_ctl.c util.c + +NETaa13527: File::Find needed to export $name and $dir +From: Chaim Frenkel +Files patched: lib/File/Find.pm + They are now exported. + +NETaa13528: cv_undef left unaccounted-for GV pointer in CV +From: Tye McQueen +Also: Spider Boardman +Files patched: op.c + +NETaa13530: scalar keys now resets hash iterator +From: Tim Bunce +Files patched: doop.c + scalar keys() now resets the hash iterator. + +NETaa13531: h2ph doesn't check defined right +From: Casper H.S. Dik +Files patched: h2ph.SH + +NETaa13540: VMS update +From: Larry Wall +Files patched: MANIFEST README.vms doio.c embed.h ext/DynaLoader/dl_vms.xs interp.sym lib/Cwd.pm lib/ExtUtils/xsubpp lib/File/Basename.pm lib/File/Find.pm lib/File/Path.pm mg.c miniperlmain.c perl.c perl.h perly.c perly.c.diff pod/perldiag.pod pp_ctl.c pp_hot.c pp_sys.c proto.h util.c vms/Makefile vms/config.vms vms/descrip.mms vms/ext/Filespec.pm vms/ext/MM_VMS.pm vms/ext/VMS/stdio/Makefile.PL vms/ext/VMS/stdio/stdio.pm vms/ext/VMS/stdio/stdio.xs vms/genconfig.pl vms/perlvms.pod vms/sockadapt.c vms/sockadapt.h vms/vms.c vms/vmsish.h vms/writemain.pl + +NETaa13540: got some duplicate code +Files patched: lib/File/Path.pm + +NETaa13540: stuff from Charles +Files patched: MANIFEST README.vms lib/ExtUtils/MakeMaker.pm lib/ExtUtils/MakeMaker.pm lib/ExtUtils/xsubpp lib/File/Basename.pm lib/File/Path.pm perl.c perl.h pod/perldiag.pod pod/perldiag.pod vms/Makefile vms/Makefile vms/config.vms vms/config.vms vms/descrip.mms vms/descrip.mms vms/ext/Filespec.pm vms/ext/Filespec.pm vms/ext/MM_VMS.pm vms/ext/MM_VMS.pm vms/ext/VMS/stdio/stdio.pm vms/ext/VMS/stdio/stdio.xs vms/gen_shrfls.pl vms/gen_shrfls.pl vms/genconfig.pl vms/genconfig.pl vms/mms2make.pl vms/perlvms.pod vms/sockadapt.h vms/test.com vms/vms.c vms/vms.c vms/vmsish.h vms/vmsish.h vms/writemain.pl + +NETaa13540: tweak from Charles +Files patched: lib/File/Path.pm + +NETaa13552: scalar unpack("P4",...) ignored the 4 +From: Eric Arnold +Files patched: pp.c + The optimization that tried to do only one item in a scalar context didn't + realize that the argument to P was not a repeat count. + +NETaa13553: now warns about 8 or 9 in octal escapes +From: Mike Rogers +Files patched: util.c + Now warns if it finds 8 or 9 before the end of the octal escape sequence. + So \039 produces a warning, but \0339 does not. + +NETaa13554: now allows foreach ${"name"} +From: Johan Holtman +Files patched: op.c + Instead of trying to remove OP_RV2SV, the compiler now just transmutes it into an + OP_RV2GV, which is a no-op for ordinary variables and does the right + thing for ${"name"}. + +NETaa13559: substitution now always checks for readonly +From: Rodger Anderson +Files patched: pp_hot.c + Substitution now always checks for readonly. + +NETaa13561: added explanations of closures and curly-quotes +From: Larry Wall +Files patched: pod/perlref.pod + +NETaa13562: null components in path cause indigestion +From: Ambrose Kofi Laing +Files patched: lib/Cwd.pm lib/pwd.pl + +NETaa13575: documented semantics of negative substr length +From: Jeff Bouis +Files patched: pod/perlfunc.pod + Documented the fact that negative length now leaves characters off the end, + and while I was at it, made it work right even if offset wasn't 0. + +NETaa13575: negative length to substr didn't work when offset non-zero +Files patched: pp.c + (same) + +NETaa13575: random cleanup +Files patched: pod/perlfunc.pod + (same) + +NETaa13580: couldn't localize $ACCUMULATOR +From: Larry Wall +Files patched: gv.c lib/English.pm mg.c perl.c sv.c + Needed to make $^A a real magical variable. Also lib/English.pm wasn't + exporting good. + +NETaa13583: doc mods from Tom +From: Larry Wall +Files patched: pod/modpods/AnyDBMFile.pod pod/modpods/Basename.pod pod/modpods/Benchmark.pod pod/modpods/Cwd.pod pod/modpods/Dynaloader.pod pod/modpods/Exporter.pod pod/modpods/Find.pod pod/modpods/Finddepth.pod pod/modpods/Getopt.pod pod/modpods/MakeMaker.pod pod/modpods/Open2.pod pod/modpods/POSIX.pod pod/modpods/Ping.pod pod/modpods/less.pod pod/modpods/strict.pod pod/perlapi.pod pod/perlbook.pod pod/perldata.pod pod/perlform.pod pod/perlfunc.pod pod/perlipc.pod pod/perlmod.pod pod/perlobj.pod pod/perlref.pod pod/perlrun.pod pod/perlsec.pod pod/perlsub.pod pod/perltrap.pod pod/perlvar.pod + +NETaa13589: return was enforcing list context on its arguments +From: Tim Freeman +Files patched: opcode.pl + A return was being treated like a normal list operator, in that it was + setting list context on its arguments. This was bogus. + +NETaa13591: POSIX::creat used wrong argument +From: Paul Marquess +Files patched: ext/POSIX/POSIX.pm + Applied suggested patch. + +NETaa13605: use strict refs error message now displays bad ref +From: Peter Gordon +Files patched: perl.h pod/perldiag.pod pp.c pp_hot.c + Now says + + Can't use string ("2") as a HASH ref while "strict refs" in use at ./foo line 12. + +NETaa13630: eof docs were unclear +From: Hallvard B Furuseth +Files patched: pod/perlfunc.pod + Applied suggested patch. + +NETaa13636: $< and $> weren't refetched on undump restart +From: Steve Pearlmutter +Files patched: perl.c + The code in main() bypassed perl_construct on an undump restart, which bypassed + the code that set $< and $>. + +NETaa13641: added Tim's fancy new import whizbangers +From: Tim Bunce +Files patched: lib/Exporter.pm + Applied suggested patch. + +NETaa13649: couldn't AUTOLOAD a symbol reference +From: Larry Wall +Files patched: pp_hot.c + pp_entersub needed to guarantee a CV so it would get to the AUTOLOAD code. + +NETaa13651: renamed file had wrong package name +From: Andreas Koenig +Files patched: lib/File/Path.pm + Applied suggested patch. + +NETaa13660: now that we're testing distribution we can diagnose RANDBITS errors +From: Karl Glazebrook +Files patched: t/op/rand.t + Changed to suggested algorithm. Also duplicated it to test rand(100) too. + +NETaa13660: rand.t didn't test for proper distribution within range +Files patched: t/op/rand.t + (same) + +NETaa13671: array slice misbehaved in a scalar context +From: Tye McQueen +Files patched: pp.c + A spurious else prevented the scalar-context-handling code from running. + +NETaa13672: filehandle constructors in POSIX don't return failure successfully +From: Ian Phillipps +Files patched: ext/POSIX/POSIX.pm + Applied suggested patch. + + +NETaa13678: forced $1 to always be untainted +From: Ka-Ping Yee +Files patched: mg.c + I believe the bug that triggered this was fixed elsewhere, but just in case, + I put in explicit code to force $1 et al not to be tainted regardless. + +NETaa13682: formline doc need to discuss ~ and ~~ policy +From: Peter Gordon +Files patched: pod/perlfunc.pod + +NETaa13686: POSIX::open and POSIX::mkfifo didn't check tainting +From: Larry Wall +Files patched: ext/POSIX/POSIX.xs + open() and mkfifo() now check tainting. + +NETaa13687: new Exporter.pm +From: Tim Bunce +Files patched: lib/Exporter.pm + Added suggested changes, except for @EXPORTABLE, because it looks too much + like @EXPORTTABLE. Decided to stick with @EXPORT_OK because it looks more + like an adjunct. Also added an export_tags routine. The keys in the + %EXPORT_TAGS hash no longer use colons, to make the initializers prettier. + +NETaa13687: new Exporter.pm +Files patched: ext/POSIX/POSIX.pm + (same) + +NETaa13694: add sockaddr_in to Socket.pm +From: Tim Bunce +Files patched: ext/Socket/Socket.pm + Applied suggested patch. + +NETaa13695: library routines should use qw() as good example +From: Dean Roehrich +Files patched: ext/DB_File/DB_File.pm ext/DynaLoader/DynaLoader.pm ext/Fcntl/Fcntl.pm ext/GDBM_File/GDBM_File.pm ext/POSIX/POSIX.pm ext/Socket/Socket.pm + Applied suggested patch. + +NETaa13696: myconfig should be a routine in Config.pm +From: Kenneth Albanowski +Files patched: configpm + Applied suggested patch. + +NETaa13704: fdopen closed fd on failure +From: Hallvard B Furuseth +Files patched: doio.c + Applied suggested patch. + +NETaa13706: Term::Cap doesn't work +From: Dean Roehrich +Files patched: lib/Term/Cap.pm + Applied suggested patch. + +NETaa13710: cryptswitch needed to be more "useable" +From: Tim Bunce +Files patched: embed.h global.sym perl.h toke.c + The cryptswitch_fp function now can operate in two modes. It can + modify the global rsfp to redirect input as before, or it can modify + linestr and return true, indicating that it is not necessary for yylex + to read another line since cryptswitch_fp has just done it. + +NETaa13712: new_tmpfile() can't be called as constructor +From: Hans Mulder +Files patched: ext/POSIX/POSIX.xs + Now allows new_tmpfile() to be called as a constructor. + +NETaa13714: variable method call not documented +From: "Randal L. Schwartz" +Files patched: pod/perlobj.pod + Now indicates that OBJECT->$method() works. + +NETaa13715: PACK->$method produces spurious warning +From: Larry Wall +Files patched: toke.c + The -> operator was telling the lexer to expect an operator when the + next thing was a variable. + +NETaa13716: Carp now allows multiple packages to be skipped out of +From: Larry Wall +Files patched: lib/Carp.pm + The subroutine redefinition warnings now warn on import collisions. + +NETaa13716: Exporter catches warnings and gives a better line number +Files patched: lib/Exporter.pm + (same) + +NETaa13716: now counts imported routines as "defined" for redef warnings +Files patched: op.c sv.c + (same) + +------------- +Version 5.000 +------------- + New things ---------- The -w switch is much more informative.