or in the .../src/5/0/unsupported directory for sub-version
releases.)
+----------------
+Version 5.003_03
+----------------
+
+Most of the changes in 5.003_03 are to make the build and installation
+process more robust. The details are described below. A very brief
+summary is:
+
+o Visible Changes to Core Functionality
+
+ -Support for tied filehandles.
+
+o Configure enhancements
+
+ -How to build and install a shared libperl.so is now documented
+ and supported, though it's not the default for most platforms.
+
+o Bug fixes
+
+ -Support bit operations on strings longer than 15 bytes.
+
+ -If a regex supplied to split() contains paranthesized subpatterns
+ that can result in null matches, perl no longer coredumps.
+
+ -Fix problems with each() on tied hashes.
+
+ -Make h2ph architecture-independent by using Config at run-time
+ rather than extraction time.
+
+o Specific Changes
+
+Here are the specific file-by-file changes.
+
+# This is my patch perl5.003_03.pat to perl5.003_02
+# The full description is below.
+# Please execute the following commands before applying this patch.
+# (You can feed this patch to 'sh' to do so.)
+# Andy Dougherty <doughera@lafcol.lafayette.edu>
+
+# Absorbed into Changes5.002
+rm -f Changes.Conf
+
+# Not needed.
+rm -f ext/POSIX/mkposixman.pl
+
+# Moved to README.os2. I'm not sure why the README files are
+# here rather than in the appropriate subdirectories.
+rm -f os2/README
+
+# Not needed.
+rm -f pod/Makefile.PL
+
+# New test for bit ops.
+touch t/op/bob.t
+
+# Patches that create new tests don't always make them executable.
+chmod +x t/*/*.t
+
+# Create a new directory for Porting and Patching info.
+mkdir Porting
+
+exit 0
+
+This is patch perl5.003_03.pat to perl version 5.003_02.
+This takes you from 5.003_02 to 5.003_03.
+
+To apply this patch, run the above commands,
+cd to your perl source directory and then type
+
+ patch -p1 -N < perl5.003_03.pat
+
+The changes are described after each /^Index/ line below. This is
+designed so you can examine each change with a command such as
+
+ csplit -k perl5.003_03.pat '/^Index:/' '{99}'
+
+Patch and enjoy,
+
+ Andy Dougherty doughera@lafcol.lafayette.edu
+ Dept. of Physics
+ Lafayette College, Easton PA 18042
+
+Index: Changes
+
+ Include 5.003_03 change notes.
+
+ Move older change notes to separate files.
+
+Index: Changes5.000
+
+ New file. Changes from perl4.036 to 5.000.
+
+Index: Changes5.001
+
+ New file. Changes from 5.000 to 5.001
+
+Index: Changes5.002
+
+ New file. Changes from 5.001 to 5.002
+
+Index: Changes5.003
+
+ New file. Changes from 5.002 to 5.003
+
+Index: Configure
+
+ Relaxed warning about ksh on exotic machines.
+
+ Changed usesafe to useopcode.
+
+ Add search for gzip and zip.
+
+ Look more carefully for $sh (the Bourne-ish shell).
+ Use that info to set $startsh correctly.
+
+ Change prompts for PerlIO interface. See INSTALL
+ for how this is supposed to work. The default is
+ still the same as in 5.003_02, namely don't use
+ any fancy new PerlIO stuff.
+
+ Don't look for sigvec() since we don't actually use it.
+ (Plus, it used to print an alarming misleading message about
+ race conditions.)
+
+ Look for stdio's _filbuf under the possible names of
+ _filbuf, __filbuf, and _fill.
+
+ New $useshrplib variable to control whether we build a shared
+ libperl.so. The name of the library is in $libperl.
+ Always install it in $installarchlib/CORE/$libperl.
+
+ Check for <sys/resource.h> and <sys/wait.h> for NetBSD.
+
+ Replace old $altmake stuff with newer autoconf-ish
+ $make_set_make, which checks if $make sets $(MAKE). Now you
+ choose an alternate make with sh Configure -Dmake=gmake (or
+ whatever).
+
+ Remove 'ln' for the list of essential commands. Simulate
+ it with 'cp' if necessary.
+
+ Change `logname` prompts to handle extra gratuitous spaces in
+ Ultrix output.
+
+ Autodetect os2.
+
+ Fix silly bug in checking for fully-qualified names in /etc/hosts.
+
+ Generalize Gconvert tests. Give correct and more useful
+ error messages.
+
+ Use $obj_ext instead of literal '.o' in the dynaloader test.
+
+ Include appropriate header files in bcopy() and memcpy()
+ tests. Note whether memmove is available.
+
+ Check whether struct sigaction works (needed for Solaris 2.5
+ with -Xc).
+
+ Include appropriate header files for randbits test.
+
+Index: INSTALL
+
+ Add note about space requirements.
+
+ Update to match Configure changes (Opcode vs. Safe,
+ useperlio, useshrplib, etc.)
+
+ Reorganize the structure of some of the hints.
+
+ Miscellaneous clarifications.
+
+Index: MANIFEST
+
+ Updated. 5.003_02 introduced some massive patches, mostly
+ due to spacing changes. I didn't bother to sort them all out;
+ I just started with 5.003's MANIEFST.
+
+Index: Makefile.SH
+
+ Support the new simplified shared libperl mechanism.
+
+ Use new $make_set_make directive.
+
+ Remove redundant libperl Make variable.
+
+ Remove unnecessary MAB variable.
+
+ Remove dependency of minitest on lib/Config.pm, since it could
+ well have been a failure of configpm that inspired testing
+ miniperl in the first place!
+
+Index: Porting/Glossary
+
+ New file describing all the config.sh variables.
+ Eventually, I hope to fill this directory with other useful
+ stuff.
+
+Index: README.os2
+
+ Replace old README.os2 with more up-to-date os2/README.
+
+Index: config_H
+
+ Updated to match current Configure and config_h.SH.
+ Some rearrangement of parts has occurred due to new
+ dependencies in the metaconfig units.
+
+Index: config_h.SH
+
+ Updated to match current Configure and config_h.SH.
+ Some rearrangement of parts has occurred due to new
+ dependencies in the metaconfig units.
+
+ Include full descriptions of ARCHLIB, OLDARCHLIB, PRIVLIB,
+ SITEARCH, and SITELIB. Previous versions just included the
+ ~-expanded names (with unhelpful descriptions). No functionality
+ is changed, but maybe it's a little better documented now.
+
+Index: doio.c
+
+ Possibly Include <signal.h> and <unistd.h>
+
+Index: doop.c
+
+ No longer prefer bcmp over memcmp when order doesn't matter.
+
+ Support bit operations on strings longer than 15 bytes.
+
+Index: embed.h
+
+ Auto-generated.
+
+Index: embed.pl
+
+ Expand warning at the top.
+
+Index: ext/IO/IO.pm
+
+ Clean up docmentation installation errors.
+
+Index: ext/IO/lib/IO/Seekable.pm
+
+ Clean up docmentation installation errors.
+
+Index: ext/IO/lib/IO/Select.pm
+
+ Clean up docmentation installation errors.
+
+Index: ext/Opcode/Opcode.xs
+
+ Add support for tied filehandles.
+
+Index: ext/SDBM_File/sdbm/sdbm.h
+
+ Change the Mymalloc to match Perl_malloc in perl.h.
+
+Index: ext/util/make_ext
+
+ Typo change.
+ Get rid of unused altmake.
+
+Index: global.sym
+
+ Fix problems with each() on tied hashes.
+
+Index: handy.h
+
+ Change safe*alloc functions to have prototypes that
+ match the system's malloc and free types. That is, use
+ Malloc_t instead of char *, and Free_t instead of void.
+ This is necessary so . . .
+
+ Safefree cast matches type of free() whether it's perl's
+ malloc/free or the system's malloc/free.
+
+Index: hints/README.hints
+
+ Remove out-of-date info.
+
+ Document a bit about how hint files work.
+
+Index: hints/aix.sh
+
+ qmaxmem hint doesn't apply to gcc.
+
+Index: hints/dgux.sh
+
+ Configure will now automatically detect shared libperl stuff.
+
+Index: hints/dynixptx.sh
+
+ Fix typo in comment.
+
+ Configure will now automatically detect shared libperl stuff.
+
+Index: hints/epix.sh
+
+ Use glibpth instead of libpth. This allows Configure to
+ add local directories, such as /opt/local/lib, etc.
+
+Index: hints/irix_6_2.sh
+
+ Include some info on cc -n32 compile.
+
+Index: hints/linux.sh
+
+ Configure now tests gcvt() more thoroughly.
+
+Index: hints/machten_2.sh
+
+ Update where to find dld.
+
+Index: hints/mips.sh
+
+ Use glibpth instead of libpth.
+
+Index: hints/next_3.sh
+
+ Build up $mab dynamically. Since $mab isn't used anywhere
+ anymore, this is useless. However, $mab was never used for
+ next_3.sh anyway, so there's been no change in functionality.
+
+Index: hints/next_4.sh
+
+ Get rid of extraneous isnext_4 variable. Configure and
+ Makefile.SH will use $osname and $osvers instead.
+
+ Build up $mab dynamically based on available architectures.
+
+ Absorb $mab into ccflags and ccdlflags. I hope that will
+ cover everything. (Configure should automatically remove
+ the -arch stuff from cppflags.)
+
+ Configure now knows next4 needs to use a shared libperl.5.so.
+
+ Allow users to use -Dprefix.
+
+Index: hints/os2.sh
+
+ Try to update to reflect newer shared libperl stuff.
+ I probably goofed :-).
+
+Index: hints/sco.sh
+
+ Additional notes on using icc.
+
+ Additional flags for dynamic loading.
+
+Index: hints/solaris_2.sh
+
+ Perl.h no longer prefers bcmp, so it's again ok if Configure
+ finds them, since perl will prefer the mem* versions anyway.
+
+Index: hints/sunos_4_0.sh
+
+ Don't include <unistd.h>
+
+Index: hints/sunos_4_1.sh
+
+ Add brief note about GNU as and ld.
+
+ Don't include <unistd.h>
+
+ Add notes about WHOA THERE messages.
+
+Index: hints/titanos.sh
+
+ Include sfio in libswanted.
+
+ Don't set libpth any more.
+
+Index: hints/umips.sh
+
+ New hint file.
+
+Index: hv.c
+
+ Use memcmp even in cases where ordering doesn't matter.
+
+ Fix problems with each() on tied hashes.
+
+Index: installperl
+
+ Simplify installation of shared libperl.so.
+
+ Avoid reaching Command Failed!!! with /usr/bin/perl.
+
+Index: lib/AutoSplit.pm
+
+ Clean up docmentation installation errors.
+
+Index: lib/ExtUtils/MM_Unix.pm
+
+ Remove MAB references.
+
+ Use 'useshrplib' instead of 'd_shrplib'
+
+Index: lib/ExtUtils/MakeMaker.pm
+
+ Remove mab references.
+
+Index: lib/FindBin.pm
+
+ Clean up docmentation installation errors.
+
+Index: lib/Symbol.pm
+
+ Put back in the BEGIN { require 5.002; }. The version in
+ 5.003_02 wouldn't work in 5.002 anyway. Further, the whole
+ point of the construct is to catch 5.001m, so we can't use
+ syntax introduced after 5.001m to do that.
+
+Index: lib/Text/Wrap.pm
+
+ Remove double 'use strict'.
+
+Index: lib/perl5db.pl
+
+ Add explicit '&' to avoid warnings under strict refs.
+
+Index: lib/sigtrap.pm
+
+ Clean up docmentation installation errors.
+
+Index: makedepend.SH
+
+ Use Configure's $sh and $make_set_make variables.
+
+Index: mg.c
+
+ Include <unistd.h>
+
+ Use Safefree() macro instead of safefree() function with
+ a (possibly) incorrect cast. The whole point of the
+ Safefree() macro is that it does the correct cast for you.
+
+
+Index: patchlevel.h
+
+ Change to SUBVERSION 3.
+
+Index: perl.c
+
+ Include <unistd.h>
+
+Index: perl.h
+
+ No longer prefer bcmp slightly for comparisons that don't care
+ about ordering.
+
+ Rely on Configure setting SH_PATH.
+
+ Change the function name to Pause() instead of pause() to
+ avoid potential prototype problems. (This naming convention
+ is similar to the Fwrite and Fflush macros.)
+
+ Fix problems with each() on tied hashes.
+
+ Work around crypt prototype problem on NeXT.
+
+Index: perlio.c
+
+ Fixes to support non-std stdio.
+
+Index: perlio.h
+
+ Try to document the various #defines a bit. This is far from
+ finished.
+
+ Remove a lot of trailing whitespace. (It's of no consequence, but
+ but I'm not going to redo the patch just to put back in the trailing
+ whitespace either.)
+
+Index: perlsdio.h
+
+ Fixes to support non-std stdio.
+
+Index: perly.c
+
+ Restore use of Safefree() macro.
+
+Index: perly.c.diff
+
+ Restore use of Safefree() macro.
+
+Index: perly.h
+
+ Delete duplicate line.
+
+Index: plan9/buildinfo
+
+ Update.
+
+Index: pod/perlapio.pod
+
+ Clean up docmentation installation errors.
+
+Index: pod/perlipc.pod
+
+ Fix typo.
+
+ Untaint port number.
+
+Index: pod/perlmod.pod
+
+ Fix a minor nit regarding Exporter.
+
+Index: pod/perlre.pod
+
+ Clean up docmentation installation errors.
+
+Index: pod/perltie.pod
+
+ Add support for tied filehandles.
+
+Index: pod/perltrap.pod
+
+ Clean up docmentation installation errors.
+
+Index: pod/perlxstut.pod
+
+ Clean up docmentation installation errors.
+
+Index: pod/pod2man.PL
+
+ Clean up docmentation installation errors.
+
+Index: pp.c
+
+ Add support for tied filehandles.
+
+ If a regex supplied to split() contains paranthesized subpatterns
+ that can result in null matches, perl coredumps.
+
+Index: pp_hot.c
+
+ Use memcmp instead of bcmp even when we don't care about order.
+
+ Add support for tied filehandles.
+
+Index: pp_sys.c
+
+ Include <unistd.h>, <sys/wait.h>, and <sys/resource.h>.
+ (The latter two are especially for NetBSD.)
+
+ Don't assume sys/time.h and sys/select.h can't coexist.
+
+ Use Pause macro.
+
+Index: proto.h
+
+ Fix safe*alloc and safefree prototypes.
+
+Index: regexec.c
+
+ Use memcmp instead of bcmp even when we don't care about order.
+
+Index: sv.c
+
+ Use memcmp instead of bcmp even when we don't care about order.
+
+Index: t/lib/opcode.t
+
+ Add support for tied filehandles.
+
+Index: t/op/bop.t
+
+ Support bit operations on strings longer than 15 bytes.
+
+Index: t/op/misc.t
+
+ Add support for tied filehandles.
+
+Index: t/op/split.t
+
+ If a regex supplied to split() contains paranthesized subpatterns
+ that can result in null matches, perl coredumps.
+
+Index: toke.c
+
+ Include <unistd.h>.
+
+ Use memcmp instead of bcmp even when we don't care about order.
+
+Index: util.c
+
+ Include <unistd.h>.
+
+ Use correct types for safe*alloc and safefree functions.
+
+Index: utils/h2ph.PL
+
+ Make h2ph architecture-independent by using Config at run-time
+ rather than extraction time.
+
+Index: writemain.SH
+
+ Remove unnecessary curlies. (They are a leftover from
+ an older auto_init mechanism.)
+
+Index: x2p/Makefile.SH
+
+ Use Configure's $sh and $make_set_make.
+
+ Remove MAB stuff, since it's now in ccflags.
+
+ Keep 5.003's RCS info.
+
+Index: x2p/a2p.h
+
+ Keep 5.003's RCS info.
+
+Index: x2p/str.c
+
+ Use Configure's FILE_filbuf macro instead of a raw _filbuf.
+
+----------------
+Version 5.003_02
+----------------
+o Visible Changes to Core Functionality
+ - Redefining constant subs, or changing sub's prototype now give warnings.
+ - Fixes for ++/-- of values close to max/min size of an integer
+ - Warning for un-qualified bareword as handler in $SIG{}.
+ - UNIVERSAL::isa can now be called as static method.
+
+o Changes in Core Internals
+ - PerlIO abstraction added.
+ Perl core and standard extensions no longer assume ANSI C's stdio is IO
+ mechanism, Default Configure mode is still to use stdio via set of C macros.
+ Alternate modes are to use stdio via one perlio.c module, or
+ to use sfio if available.
+
+ - Several bug fixs from perl5-porters
+ - Make sources non-ANSI C correct again.
+ - SUPER in gv.c
+ - Last of shared-hash-key patches
+ - eval '(0,1..3)'; # --> SegFault
+ - coredumps after simple subsitutes.
+ - Correction to UNIVERSAL::VERSION docs.
+ - Fixed io_udp test.
+ - Fixed another abuse of malloc'ed memory.
+ - Enabled DEBUGING_MSTATS whenever perl's malloc() is used.
+ - Reverted to default of not hiding perl's malloc (if used).
+
+o Changes in the Standard Library and Utilities
+ - Fixed MakeMaker for static SDBM and builing in a link tree.
+ - Upgraded to IO-1.09, and includes latest (still experimental) IO::Select.
+ - Documentation/test tweak to DB_File
+ - h2xs upgrade to allow use C::Scan module
+
+o Changes in OS-specific and Build-time Support
+ - Attempted to re-created 5.003_01's NeXT support with metaconfig units.
+ - Updated MANIFEST
+ - make minitest now depends on lib/Config.pm, as some of tests require it.
+ - Included latest plan9 sub-directory
+ - Applied OS/2 patches.
+ - Typo patch for VMS.
----------------
Version 5.003_01
- 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 <mcook@cognex.com>
- #Newsgroups: comp.lang.perl
- #Subject: bug: print -$1
- #Date: 01 Feb 1995 15:31:25 GMT
- #Message-ID: <MCOOK.95Feb1103125@erawan.cognex.com>
-
- $_ = "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) = <blurch*>;
-
- than
-
- $file = <blurch*>;
-
- 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 <Tim.Bunce@ig.co.uk>
-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 <Tim.Bunce@ig.co.uk>
-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 <dkindred+@cmu.edu>
-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 <roderick@gate.net>
-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 <bsc@umich.edu>
-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" <robh@cs.indiana.edu>
-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 (<HANDLE>) now means while (defined($_ = <HANDLE>)).
-
-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.
-
- References. See t/op/ref.t for examples. All entities in Perl 5 are
- reference counted so that it knows when each item should be destroyed.
-
- Objects. See t/op/ref.t for examples.
-
- => is now a synonym for comma. This is useful as documentation for
- arguments that come in pairs, such as initializers for associative arrays,
- or named arguments to a subroutine.
-
- All functions have been turned into list operators or unary operators,
- meaning the parens are optional. Even subroutines may be called as
- list operators if they've already been declared.
-
- More embeddible. See main.c and embed_h.sh. Multiple interpreters
- in the same process are supported (though not with interleaved
- execution yet).
-
- The interpreter is now flattened out. Compare Perl 4's eval.c with
- the perl 5's pp.c. Compare Perl 4's 900 line interpreter loop in cmd.c
- with Perl 5's 1 line interpreter loop in run.c. Eventually we'll make
- everything non-blocking so we can interface nicely with a scheduler.
-
- eval is now treated more like a subroutine call. Among other things,
- this means you can return from it.
-
- Format value lists may be spread over multiple lines by enclosing in
- a do {} block.
-
- You may now define BEGIN and END subroutines for each package. The BEGIN
- subroutine executes the moment it's parsed. The END subroutine executes
- just before exiting.
-
- Flags on the #! line are interpreted even if the script wasn't
- executed directly. (And even if the script was located by "perl -x"!)
-
- The ?: operator is now legal as an lvalue.
-
- List context now propagates to the right side of && and ||, as well
- as the 2nd and 3rd arguments to ?:.
-
- The "defined" function can now take a general expression.
-
- Lexical scoping available via "my". eval can see the current lexical
- variables.
-
- The preferred package delimiter is now :: rather than '.
-
- tie/untie are now preferred to dbmopen/dbmclose. Multiple DBM
- implementations are allowed in the same executable, so you can
- write scripts to interchange data among different formats.
-
- New "and" and "or" operators work just like && and || but with
- a precedence lower than comma, so they work better with list operators.
-
- New functions include: abs(), chr(), uc(), ucfirst(), lc(), lcfirst(),
- chomp(), glob()
-
- require with a number checks to see that the version of Perl that is
- currently running is at least that number.
-
- Dynamic loading of external modules is now supported.
-
- There is a new quote form qw//, which is equivalent to split(' ', q//).
-
- Assignment of a reference to a glob value now just replaces the
- single element of the glob corresponding to the reference type:
- *foo = \$bar, *foo = \&bletch;
-
- Filehandle methods are now supported:
- output_autoflush STDOUT 1;
-
- There is now an "English" module that provides human readable translations
- for cryptic variable names.
-
- Autoload stubs can now call the replacement subroutine with goto &realsub.
-
- Subroutines can be defined lazily in any package by declaring an AUTOLOAD
- routine, which will be called if a non-existent subroutine is called in
- that package.
-
- Several previously added features have been subsumed under the new
- keywords "use" and "no". Saying "use Module LIST" is short for
- BEGIN { require Module; import Module LIST; }
- The "no" keyword is identical except that it calls "unimport" instead.
- The earlier pragma mechanism now uses this mechanism, and two new
- modules have been added to the library to implement "use integer"
- and variations of "use strict vars, refs, subs".
-
- Variables may now be interpolated literally into a pattern by prefixing
- them with \Q, which works just like \U, but backwhacks non-alphanumerics
- instead. There is also a corresponding quotemeta function.
-
- Any quantifier in a regular expression may now be followed by a ? to
- indicate that the pattern is supposed to match as little as possible.
-
- Pattern matches may now be followed by an m or s modifier to explicitly
- request multiline or singleline semantics. An s modifier makes . match
- newline.
-
- Patterns may now contain \A to match only at the beginning of the string,
- and \Z to match only at the end. These differ from ^ and $ in that
- they ignore multiline semantics. In addition, \G matches where the
- last interation of m//g or s///g left off.
-
- Non-backreference-producing parens of various sorts may now be
- indicated by placing a ? directly after the opening parenthesis,
- followed by a character that indicates the purpose of the parens.
- An :, for instance, indicates simple grouping. (?:a|b|c) will
- match any of a, b or c without producing a backreference. It does
- "eat" the input. There are also assertions which do not eat the
- input but do lookahead for you. (?=stuff) indicates that the next
- thing must be "stuff". (?!nonsense) indicates that the next thing
- must not be "nonsense".
-
- The negation operator now treats non-numeric strings specially.
- A -"text" is turned into "-text", so that -bareword is the same
- as "-bareword". If the string already begins with a + or -, it
- is flipped to the other sign.
-
-Incompatibilities
------------------
- @ now always interpolates an array in double-quotish strings. Some programs
- may now need to use backslash to protect any @ that shouldn't interpolate.
-
- Ordinary variables starting with underscore are no longer forced into
- package main.
-
- s'$lhs'$rhs' now does no interpolation on either side. It used to
- interplolate $lhs but not $rhs.
-
- The second and third arguments of splice are now evaluated in scalar
- context (like the book says) rather than list context.
-
- Saying "shift @foo + 20" is now a semantic error because of precedence.
-
- "open FOO || die" is now incorrect. You need parens around the filehandle.
-
- The elements of argument lists for formats are now evaluated in list
- context. This means you can interpolate list values now.
-
- You can't do a goto into a block that is optimized away. Darn.
-
- It is no longer syntactically legal to use whitespace as the name
- of a variable, or as a delimiter for any kind of quote construct.
-
- Some error messages will be different.
-
- The caller function now returns a false value in a scalar context if there
- is no caller. This lets library files determine if they're being required.
-
- m//g now attaches its state to the searched string rather than the
- regular expression.
-
- "reverse" is no longer allowed as the name of a sort subroutine.
-
- taintperl is no longer a separate executable. There is now a -T
- switch to turn on tainting when it isn't turned on automatically.
-
- Symbols starting with _ are no longer forced into package main, except
- for $_ itself (and @_, etc.).
-
- Double-quoted strings may no longer end with an unescaped $ or @.
-
- Negative array subscripts now count from the end of the array.
-
- The comma operator in a scalar context is now guaranteed to give a
- scalar context to its arguments.
-
- The ** operator now binds more tightly than unary minus.
-
- Setting $#array lower now discards array elements so that destructors
- work reasonably.
-
- delete is not guaranteed to return the old value for tied arrays,
- since this capability may be onerous for some modules to implement.
-
- Attempts to set $1 through $9 now result in a run-time error.