perl 5.002beta2 patch: toke.c
[p5sagit/p5-mst-13.2.git] / Changes
1 -------------
2 Version 5.002
3 -------------
4
5 Nearly all the changes for 5.001 were bug fixes of one variety or another,
6 so here's the bug list, along with the "resolution" for each of them.  If
7 you wish to correspond about any of them, please include the bug number.
8
9 Added APPLLIB_EXP for embedded perl library support.
10 Files patched: perl.c
11
12 Couldn't define autoloaded routine by assignment to typeglob.
13 Files patched: pp_hot.c sv.c
14
15 NETaa13399: Andy patches.
16 From: Larry Wall
17 Files patched: MANIFEST
18
19 NETaa13399: Andy's patch 1m
20 Files patched: Configure MANIFEST Makefile.SH embed.h embed.pl
21     ext/GDBM_File/GDBM_File.xs global.sym hints/freebsd.sh installman
22     installperl interp.sym keywords.h keywords.pl lib/Exporter.pm
23     lib/ExtUtils/MakeMaker.pm lib/ExtUtils/xsubpp op.c perl.c perl.h perldoc.SH
24     pod/perl.pod pod/pod2html.SH pp.c pp_ctl.c pp_ctl.c pp_hot.c proto.h
25     regcomp.c regcomp.h regexec.c toke.c x2p/util.c x2p/util.h
26
27 NETaa13399: Andy's patch.1l
28 Files patched: Changes.Conf Configure Makefile.SH README README.vms c2ph.SH
29     config_H config_h.SH configpm configure doio.c embed.h
30     ext/DB_File/DB_File.pm ext/DB_File/DB_File.xs ext/DynaLoader/DynaLoader.pm
31     ext/DynaLoader/Makefile.PL ext/DynaLoader/README ext/DynaLoader/dl_dlopen.xs
32     ext/Fcntl/Fcntl.pm ext/Fcntl/Fcntl.xs ext/GDBM_File/GDBM_File.pm
33     ext/GDBM_File/GDBM_File.xs ext/NDBM_File/hints/solaris.pl
34     ext/ODBM_File/Makefile.PL ext/ODBM_File/hints/sco.pl
35     ext/ODBM_File/hints/solaris.pl ext/ODBM_File/hints/svr4.pl
36     ext/POSIX/POSIX.pm ext/POSIX/POSIX.xs ext/SDBM_File/sdbm/sdbm.c
37     ext/Socket/Socket.pm global.sym h2ph.SH h2xs.SH handy.h hints/README.hints
38     hints/apollo.sh hints/aux.sh hints/cxux.sh hints/dynix.sh hints/epix.sh
39     hints/freebsd.sh hints/hpux_9.sh hints/irix_4.sh hints/irix_5.sh
40     hints/irix_6.sh hints/isc.sh hints/linux.sh hints/netbsd.sh hints/next_3.sh
41     hints/next_3_0.sh hints/powerunix.sh hints/sco_3.sh hints/titanos.sh
42     installman installperl lib/AnyDBM_File.pm lib/AutoLoader.pm lib/AutoSplit.pm
43     lib/Benchmark.pm lib/Carp.pm lib/Cwd.pm lib/English.pm lib/Exporter.pm
44     lib/ExtUtils/Liblist.pm lib/ExtUtils/MakeMaker.pm lib/ExtUtils/Manifest.pm
45     lib/ExtUtils/Mkbootstrap.pm lib/ExtUtils/xsubpp lib/File/Basename.pm
46     lib/File/CheckTree.pm lib/File/Find.pm lib/FileHandle.pm lib/Getopt/Long.pm
47     lib/Getopt/Std.pm lib/I18N/Collate.pm lib/IPC/Open2.pm lib/IPC/Open3.pm
48     lib/Net/Ping.pm lib/Term/Complete.pm lib/Text/Abbrev.pm lib/Text/Tabs.pm
49     lib/ftp.pl lib/getcwd.pl lib/integer.pm lib/less.pm lib/sigtrap.pm
50     lib/strict.pm lib/subs.pm makeaperl.SH makedepend.SH myconfig perl.c perl.h
51     perldoc.SH pod/Makefile pod/perl.pod pod/perlbot.pod pod/perlcall.pod
52     pod/perlfunc.pod pod/perlguts.pod pod/perlop.pod pod/perlre.pod
53     pod/perlxs.pod pod/pod2html.SH pod/pod2latex.SH pod/pod2man.SH pp_ctl.c
54     pp_hot.c pp_sys.c proto.h scope.c sv.c sv.h t/comp/cpp.aux t/comp/cpp.t
55     t/op/misc.t toke.c unixish.h util.c vms/config.vms vms/ext/MM_VMS.pm
56     vms/ext/VMS/stdio/stdio.xs vms/perlvms.pod vms/vms.c x2p/Makefile.SH
57     x2p/find2perl.SH x2p/s2p.SH x2p/str.c
58
59 NETaa13399: Jumbo Configure patch (and patch 1)
60 Files patched: Changes.Conf
61
62 NETaa13399: Jumbo Configure patch (and patch 1)    
63 Files patched: Configure INSTALL MANIFEST Makefile.SH README config_H
64     config_h.SH configure embed.h ext/Fcntl/Fcntl.xs ext/ODBM_File/ODBM_File.xs
65     h2xs.SH hints/aix.sh hints/hpux_9.sh hints/isc.sh hints/isc_2.sh
66     hints/solaris_2.sh hints/unicos.sh hints/utekv.sh lib/ExtUtils/MakeMaker.pm
67     makedepend.SH t/README x2p/a2p.h
68
69 NETaa13399: Jumbo Configure patch (patches 2 and 3)
70 Files patched: Configure INSTALL config_h.SH embed.h ext/Fcntl/Fcntl.xs
71     ext/POSIX/POSIX.xs global.sym mg.c perl.h proto.h
72
73 NETaa13525: doc changes
74 From: Larry Wall
75 Files patched: pod/perlop.pod pod/perltrap.pod
76
77 NETaa13525: random cleanup
78 Files patched: Configure MANIFEST Makefile.SH cop.h embed.h global.sym
79     hints/dec_osf.sh hv.c lib/dotsh.pl mg.c op.c op.c op.h perl.c perl.c perly.c
80     perly.c perly.c.diff perly.c.diff perly.h perly.y pod/perl.pod
81     pod/perldiag.pod pod/perlfunc.pod pod/perlfunc.pod pod/perlfunc.pod
82     pod/perlfunc.pod pod/perlop.pod pod/perlre.pod pod/perltrap.pod
83     pod/perlxs.pod pod/perlxs.pod pp_ctl.c pp_ctl.c pp_hot.c pp_sys.c proto.h
84     regcomp.c regexec.c sv.c sv.c sv.c toke.c vms/perly_c.vms vms/perly_h.vms
85
86 NETaa13540: VMS stuff
87 From: Larry Wall
88 Files patched: EXTERN.h INTERN.h MANIFEST Makefile.SH README.vms av.c embed.h
89     ext/Socket/Socket.pm ext/Socket/Socket.xs global.sym gv.c lib/AutoSplit.pm
90     lib/ExtUtils/MakeMaker.pm lib/ExtUtils/MakeMaker.pm lib/ExtUtils/Manifest.pm
91     lib/ExtUtils/xsubpp lib/File/Find.pm lib/File/Path.pm lib/lib.pm perl.c
92     perl.h pp_ctl.c pp_sys.c proto.h run.c sv.c vms/Makefile vms/Makefile
93     vms/config.vms vms/descrip.mms vms/descrip.mms vms/ext/MM_VMS.pm
94     vms/gen_shrfls.pl vms/perlvms.pod vms/perly_c.vms vms/perly_h.vms
95     vms/sockadapt.c vms/sockadapt.h vms/test.com vms/vms.c vms/vms_yfix.pl
96     vms/vmsish.h
97
98 NETaa13540: VMS uses CLK_TCK for HZ
99 Files patched: pp_sys.c
100
101 NETaa13721: pad_findlex core dumps on bad CvOUTSIDE()
102 From: Carl Witty
103 Files patched: op.c sv.c toke.c
104  Each CV has a reference to the CV containing it lexically.  Unfortunately,
105  it didn't reference-count this reference, so when the outer CV was freed,
106  we ended up with a pointer to memory that got reused later as some other kind
107  of SV.
108
109 NETaa13721: warning suppression
110 Files patched: toke.c
111  (same)
112
113 NETaa13722: walk.c had inconsistent static declarations
114 From: Tim Bunce
115 Files patched: x2p/walk.c
116  Consolidated the various declarations and made them consistent with
117  the actual definitions.
118
119 NETaa13729: order-of-evaluation dependency in scope.c on leaving REGCONTEXT
120 From: "Jason Shirk"
121 Files patched: scope.c
122  Did
123  
124                  I32 delta = SSPOPINT;
125                  savestack_ix -= delta;  /* regexp must have croaked */
126  
127  instead.
128
129 NETaa13731: couldn't assign external lexical array to itself
130 From: oneill@cs.sfu.ca
131 Files patched: op.c
132  The pad_findmy routine was only checking previous statements for previous
133  mention of external lexicals, so the fact that the current statement
134  already mentioned @list was not noted.  It therefore allocated another
135  reference to the outside lexical, and this didn't compare equal when
136  the assigment parsing code was trying to determine whether there was a
137  common variable on either side of the equals.  Since it didn't see the
138  same variable, it thought it could avoid making copies of the values on
139  the stack during list assignment.  Unfortunately, before using those
140  values, the list assignment has to zero out the target array, which
141  destroys the values.
142  
143  The fix was to make pad_findmy search the current statement as well.  This
144  was actually a holdover from some old code that was trying to delay
145  introduction of "my" variables until the next statement.  This is now
146  done with a different mechanism, so the fix should not adversely affect
147  that.
148
149 NETaa13733: s/// doesn't free old string when using copy mode
150 From: Larry Wall
151 Files patched: pp_ctl.c pp_hot.c
152  When I removed the use of sv_replace(), I simply forgot to free the old char*.
153
154 NETaa13736: closures leaked memory
155 From: Carl Witty
156 Files patched: op.c pp.c
157  This is a specific example of a more general bug, fixed as NETaa13760, having
158  to do with reference counts on comppads.
159
160 NETaa13739: XSUB interface caches gimme in case XSUB clobbers it
161 From: Dean Roehrich
162 Files patched: pp_hot.c
163  Applied suggest patch.  Also deleted second gimme declaration as redundant.
164
165 NETaa13760: comppad reference counts were inconsistent
166 From: Larry Wall
167 Files patched: op.c perl.c pp_ctl.c toke.c
168  All official references to comppads are supposed to be through compcv now,
169  but the transformation was not complete, resulting in memory leakage.
170
171 NETaa13761: sv_2pv() wrongly preferred IV to NV when SV was readonly
172 From: "Jack R. Lawler"
173 Files patched: sv.c
174  Okay, I understand how this one happened.  This is a case where a
175  beneficial fix uncovered a bug elsewhere.  I changed the constant
176  folder to prefer integer results over double if the numbers are the
177  same.  In this case, they aren't, but it leaves the integer value there
178  anyway because the storage is already allocated for it, and it *might*
179  be used in an integer context.  And since it's producing a constant, it
180  sets READONLY.  Unfortunately, sv_2pv() bogusly preferred the integer
181  value to the double when READONLY was set.  This never showed up if you
182  just said
183  
184      print 1.4142135623731;
185  
186  because in that case, there was already a string value.
187  
188
189 NETaa13772: shmwrite core dumps consistently
190 From: Gabe Schaffer
191 Files patched: opcode.h opcode.pl
192  The shmwrite operator is a list operator but neglected to push a stack
193  mark beforehand, because an 'm' was missing from opcode.pl.
194
195 NETaa13773: $. was misdocumented as read-only.
196 From: Inaba Hiroto
197 Files patched: pod/perlvar.pod
198      <1.array-element-read-only>
199      % perl -le '$,=", "; $#w=5; for (@w) { $_=1; } print @w' 
200      Modification of a read-only value attempted at -e line 1.
201      % perl4 -le '$,=", "; $#w=5; for (@w) { $_=1; } print @w'   
202      1, 1, 1, 1, 1, 1
203  
204  This one may stay the way it is for performance reasons.
205  
206      <2.begin-local-RS>
207      % cat abc
208      a
209      b
210      c
211      % perl -e 'BEGIN { local $/ = ""; } print "$.:$_" while <>;' abc
212      1:a
213      b
214      c
215      % perl -e '{ local $/ = ""; } print "$.:$_" while <>;' abc
216      1:a
217      2:b
218      3:c
219  
220  $/ wasn't initialized early enough, so local set it back to permanently
221  undefined on exit from the block.
222  
223      <3.grep-x0-bug>
224      % perl -le 'print grep(/^-/ ? ($x=$_) x 0 : 1, "a", "-b", "c");'
225      a
226  
227      % perl4 -le 'print grep(/^-/ ? ($x=$_) x 0 : 1, "a", "-b", "c");'
228      ac
229  
230  An extra mark was left on the stack if (('x') x $repeat) was used in a scalar
231  context.
232  
233      <4.input-lineno-assign>
234      # perl -w does not complain about assignment to $. (Is this just a feature?)
235      # perlvar.pod says "This variable should be considered read-only."
236      % cat abc
237      a
238      b
239      c
240      % perl -wnle '$. = 10 if $. == 2; print "$.:$_"' abc
241      1:a
242      10:b
243      11:c
244  
245  Fixed doc.
246  
247      <5.local-soft-ref.bug>
248      % perl -e 'local ${"a"}=1;'
249      zsh: 529 segmentation fault  perl -e 'local ${"a"}=1;'
250  
251  Now says
252      Can't localize a reference at -e line 1.
253  
254      <6.package-readline>
255      % perl -e 'package foo; sub foo { 1; } package main; $_ = foo::foo(); print'
256      1
257      % perl -e '
258        package readline; sub foo { 1; } package main; $_ = readline::foo(); print'
259      Undefined subroutine &main::foo called at -e line 1.
260      % perl -e '
261        package readline; sub foo { 1; } package main; $_ = &readline::foo(); print'
262      1
263  
264  Now treats foo::bar correctly even if foo is a keyword.
265  
266      <7.page-head-set-to-null-string>
267      % cat page-head
268      #From: russell@ccu1.auckland.ac.nz (Russell Fulton)
269      #Newsgroups: comp.lang.perl
270      #Subject: This script causes Perl 5.00 to sementation fault
271      #Date: 15 Nov 1994 00:11:37 GMT
272      #Message-ID: <3a8ubp$jrj@net.auckland.ac.nz>
273  
274      select((select(STDOUT),  $^='')[0]);  #this is the critical line
275      $a = 'a';
276      write ;
277      exit;
278  
279      format STDOUT =
280      @<<<<<<
281      $a
282      .
283  
284      % perl page-head
285      zsh: 1799 segmentation fault  perl /tmp/page-head
286  
287  Now says
288      Undefined top format "main::" called at ./try line 11.
289  
290      <8.sub-as-index>
291      # parser bug?
292      % perl -le 'sub foo {0}; $x[0]=0;$x[foo]<=0'
293      Unterminated <> operator at -e line 1.
294      % perl -le 'sub foo {0}; $x[0]=0;$x[foo()]<=0'
295  
296  A right square bracket now forces expectation of an operator.
297  
298      <9.unary-minus-to-regexp-var>
299      % cat minus-reg
300      #From: Michael Cook <mcook@cognex.com>
301      #Newsgroups: comp.lang.perl
302      #Subject: bug: print -$1
303      #Date: 01 Feb 1995 15:31:25 GMT
304      #Message-ID: <MCOOK.95Feb1103125@erawan.cognex.com>
305  
306      $_ = "123";
307      /\d+/;
308      print $&, "\n";
309      print -$&, "\n";
310      print 0-$&, "\n";
311  
312      % perl minus-reg
313      123
314      123
315      -123
316  
317  Apparently already fixed in my copy.
318  
319      <10.vec-segv>
320      % cat vec-bug
321      ## Offset values are changed for my machine.
322  
323      #From: augustin@gdstech.grumman.com (Conrad Augustin)
324      #Subject: perl5 vec() bug?
325      #Message-ID: <1994Nov22.193728.25762@gdstech.grumman.com>
326      #Date: Tue, 22 Nov 1994 19:37:28 GMT
327  
328      #The following two statements each produce a segmentation fault in perl5:
329  
330      #vec($a, 21406, 32) = 1;  # seg fault
331      vec($a, 42813, 16) = 1;  # seg fault
332  
333      #When the offset values are one less, all's well:
334      #vec($a, 21405, 32) = 1;  # ok
335      #vec($a, 42812, 16) = 1;  # ok
336  
337      #Interestingly, this is ok for all high values of N:
338      #$N=1000000; vec($a, $N, 8) = 1;
339  
340      % perl vec-bug
341      zsh: 1806 segmentation fault  perl vec-bug
342  
343  Can't reproduce this one.
344  
345
346 NETaa13773: $/ not correctly localized in BEGIN
347 Files patched: perl.c
348  (same)
349
350 NETaa13773: foo::bar was misparsed if foo was a reserved word
351 Files patched: toke.c toke.c
352  (same)
353
354 NETaa13773: right square bracket didn't force expectation of operator
355 Files patched: toke.c
356  (same)
357
358 NETaa13773: scalar ((x) x $repeat) left stack mark
359 Files patched: op.c
360  (same)
361
362 NETaa13778: -w coredumps on <$>
363 From: Hans Mulder
364 Files patched: pp_hot.c toke.c
365  Now produces suggested error message.  Also installed guard in warning code
366  that coredumped.
367
368 NETaa13779: foreach didn't use savestack mechanism
369 From: Hans Mulder
370 Files patched: cop.h pp_ctl.c
371  The foreach mechanism saved the old scalar value on the context stack
372  rather than the savestack.  It could consequently get out of sync if
373  unexpectedly unwound.
374
375 NETaa13785: GIMME sometimes used wrong context frame
376 From: Greg Earle
377 Files patched: embed.h global.sym op.h pp_ctl.c proto.h
378  The expression inside the return was taking its context from the immediately
379  surrounding block rather than the innermost surrounding subroutine call.
380
381 NETaa13794: TieHash produces ${pack} warnings
382 From: Stanley Donald Capelik x74321 24-5200 021876
383 Files patched: lib/TieHash.pm
384  Changed $pack to $pkg.
385
386 NETaa13797: could modify sv_undef through auto-vivification
387 From: Ilya Zakharevich
388 Files patched: pp.c
389  Inserted the missing check for readonly values on auto-vivification.
390
391 NETaa13798: if (...) {print} treats print as quoted
392 From: Larry Wall
393 Files patched: toke.c
394  The trailing paren of the condition was setting expectations to XOPERATOR
395  rather than XBLOCK, so it was being treated like ${print}.
396
397 NETaa13926: commonality was not detected in assignments using COND_EXPR
398 From: Mark Hanson
399 Files patched: opcode.h opcode.pl
400  The assignment compiler didn't check the 2nd and 3rd args of a ?:
401  for commonality.  It still doesn't, but I made ?: into a "dangerous"
402  operator so it is forced to treat it as common.
403
404 NETaa13957: was marking the PUSHMARK as modifiable rather than the arg
405 From: David Couture
406 Files patched: op.c sv.c
407  It was marking the PUSHMARK as modifiable rather than the arg.
408
409 NETaa13962: documentation of behavior of scalar <*> was unclear
410 From: Tom Christiansen
411 Files patched: pod/perlop.pod
412  Added the following to perlop:
413  
414  A glob only evaluates its (embedded) argument when it is starting a new
415  list.  All values must be read before it will start over.  In a list
416  context this isn't important, because you automatically get them all
417  anyway.  In a scalar context, however, the operator returns the next value
418  each time it is called, or a FALSE value if you've just run out.  Again,
419  FALSE is returned only once.  So if you're expecting a single value from
420  a glob, it is much better to say
421  
422      ($file) = <blurch*>;
423  
424  than
425  
426      $file = <blurch*>;
427  
428  because the latter will alternate between returning a filename and
429  returning FALSE.
430  
431
432 NETaa13992: regexp comments not seen after + in non-extended regexp
433 From: Mark Knutsen
434 Files patched: regcomp.c
435  The code to skip regexp comments was guarded by a conditional that only
436  let it work when /x was in effect.
437
438 NETaa14014: use subs should not count as definition, only as declaration
439 From: Keith Thompson
440 Files patched: sv.c
441  On *foo = \&bar, doesn't set GVf_IMPORTED if foo and bar are in same package.
442
443 NETaa14021: sv_inc and sv_dec "upgraded" magical SV to non-magical
444 From: Paul A Sand
445 Also: Andreas Koenig
446 Files patched: sv.c
447  The sv_inc() and sv_dec() routines "upgraded" null magical SVs to non-magical.
448
449 NETaa14086: require should check tainting
450 From: Karl Simon Berg
451 Files patched: pp_ctl.c
452  Since we shouldn't allow tainted requires anyway, it now says:
453  
454    Insecure dependency in require while running with -T switch at tst.pl line 1.
455
456 NETaa14104: negation fails on magical variables like $1
457 From: tim
458 Files patched: pp.c
459  Negation was failing on magical values like $1.  It was testing the wrong
460  bits and also failed to provide a final "else" if none of the bits matched.
461
462 NETaa14107: deep sort return leaked contexts
463 From: Quentin Fennessy
464 Files patched: pp_ctl.c
465  Needed to call dounwind() appropriately.
466
467 NETaa14129: attempt to localize via a reference core dumps
468 From: Michele Sardo
469 Files patched: op.c pod/perldiag.pod
470  Now produces an error "Can't localize a reference", with explanation in
471  perldiag.
472
473 NETaa14138: substr() and s/// can cause core dump
474 From: Andrew Vignaux
475 Files patched: pp_hot.c
476  Forgot to call SvOOK_off() on the SV before freeing its string.
477
478 NETaa14145: ${@INC}[0] dumped core in debugger
479 From: Hans Mulder
480 Files patched: sv.c
481  Now croaks "Bizarre copy of ARRAY in block exit", which is better than
482  a core dump.  The fact that ${@INC}[0] means $INC[0] outside the debugger
483  is a different bug.
484
485 NETaa14147: bitwise assignment ops wipe out byte of target string
486 From: Jim Richardson
487 Files patched: doop.c
488  The code was assuming that the target was not either of the two operands,
489  which is false for an assignment operator.
490
491 NETaa14153: lexing of lexicals in patterns fooled by character class
492 From: Dave Bianchi
493 Files patched: toke.c
494  It never called the dwimmer, which is how it fooled it.
495
496 NETaa14154: allowed autoloaded methods by recognizing sub method; declaration
497 From: Larry Wall
498 Files patched: gv.c
499  Made sub method declaration sufficient for autoloader to stop searching on.
500
501 NETaa14156: shouldn't optimize block scope on tainting
502 From: Pete Peterson
503 Files patched: op.c toke.c
504  I totally disabled the block scope optimization when running tainted.
505
506 NETaa14157: -T and -B only allowed 1/30 "odd" characters--changed to 1/3
507 From: Tor Lillqvist
508 Files patched: pp_sys.c
509  Applied suggested patch.
510
511 NETaa14160: deref of null symbol should produce null list
512 From: Jared Rhine
513 Files patched: pp_hot.c
514  It didn't check for list context before returning undef.
515
516 NETaa14162: POSIX::gensym now returns a symbol reference
517 From: Josh N. Pritikin
518 Also: Tim Bunce
519 Files patched: ext/POSIX/POSIX.pm
520  Applied suggested patch.
521
522 NETaa14164: POSIX autoloader now distinguishes non-constant "constants"
523 From: Tim Bunce <Tim.Bunce@ig.co.uk>
524 Files patched: ext/POSIX/POSIX.pm ext/POSIX/POSIX.xs
525  The .xs file now distinguishes non-constant "constants" by setting EAGAIN.
526  This will also let us use #ifdef within the .xs file to de-constantify
527  any other macros that happen not to be constants even if they don't use
528  an argument.
529
530 NETaa14166: missing semicolon after "my" induces core dump
531 From: Thomas Kofler
532 Files patched: toke.c
533  The parser was left thinking it was still processing a "my", and flubbed.
534  I made it wipe out the "in_my" variable on a syntax error.
535
536 NETaa14166: missing semicolon after "my" induces core dump"
537 Files patched: toke.c
538  (same)
539
540 NETaa14206: can now use English and strict at the same time
541 From: Andrew Wilcox
542 Files patched: sv.c
543  It now counts imported symbols as okay under "use strict".
544
545 NETaa14206: can now use English and strict at the same time 
546 Files patched: gv.c pod/perldiag.pod
547  (same)
548
549 NETaa14265: elseif now produces severe warning
550 From: Yutao Feng
551 Files patched: pod/perldiag.pod toke.c
552  Now complains explicitly about "elseif".
553
554 NETaa14279: list assignment propagated taintedness to independent scalars
555 From: Tim Freeman
556 Files patched: pp_hot.c
557  List assignment needed to be modified so that tainting didn't propagate
558  between independent scalar values.
559
560 NETaa14312: undef in @EXPORTS core dumps
561 From: William Setzer
562 Files patched: lib/Exporter.pm
563  Now says:
564  
565      Unable to create sub named "t::" at lib/Exporter.pm line 159.
566      Illegal null symbol in @t::EXPORT at -e line 1
567      BEGIN failed--compilation aborted at -e line 1.
568  
569
570 NETaa14312: undef in @EXPORTS core dumps     
571 Files patched: pod/perldiag.pod sv.c
572  (same)
573
574 NETaa14321: literal @array check shouldn't happen inside embedded expressions
575 From: Mark H. Nodine
576 Files patched: toke.c
577  The general solution to this is to disable the literal @array check within
578  any embedded expression.  For instance, this also failed bogusly:
579  
580      print "$foo{@foo}";
581  
582  The reason fixing this also fixes the s///e problem is that the lexer
583  effectively puts the RHS into a do {} block, making the expression
584  embedded within curlies, as far as the error message is concerned.
585
586 NETaa14322: now localizes $! during POSIX::AUTOLOAD
587 From: Larry Wall
588 Files patched: ext/POSIX/POSIX.pm
589  Added local $! = 0.
590
591 NETaa14324: defined() causes spurious sub existence
592 From: "Andreas Koenig"
593 Files patched: op.c pp.c
594  It called pp_rv2cv which wrongly assumed it could add any sub it referenced.
595
596 NETaa14336: use Module () forces import of nothing
597 From: Tim Bunce
598 Files patched: op.c
599  use Module () now refrains from calling import at all.
600
601 NETaa14353: added special HE allocator
602 From: Larry Wall
603 Files patched: global.sym
604
605 NETaa14353: added special HE allocator 
606 Files patched: hv.c perl.h
607
608 NETaa14353: array extension now converts old memory to SV storage.
609 Files patched: av.c av.h sv.c
610
611 NETaa14353: hashes now convert old storage into SV arenas.
612 Files patched: global.sym
613
614 NETaa14353: hashes now convert old storage into SV arenas.  
615 Files patched: hv.c perl.h
616
617 NETaa14353: upgraded SV arena allocation
618 Files patched: proto.h
619
620 NETaa14353: upgraded SV arena allocation            
621 Files patched: perl.c sv.c
622
623 NETaa14422: added rudimentary prototypes
624 From: Gisle Aas
625 Files patched: Makefile.SH op.c op.c perly.c perly.c.diff perly.h perly.y proto.h sv.c toke.c
626  Message-Id: <9509290018.AA21548@scalpel.netlabs.com>
627  To: doughera@lafcol.lafayette.edu (Andy Dougherty)
628  Cc: perl5-porters@africa.nicoh.com
629  Subject: Re: Jumbo Configure patch vs. 1m. 
630  Date: Thu, 28 Sep 95 17:18:54 -0700
631  From: lwall@scalpel.netlabs.com (Larry Wall)
632  
633  : No.  Larry's currently got the patch pumpkin for all such core perl topics.
634  
635  I dunno whether you should let me have the patch pumpkin or not.  To fix
636  a Sev 2 I just hacked in rudimentary prototypes.  :-)
637  
638  We can now define true unary subroutines, as well as argumentless
639  subroutines:
640  
641      sub baz () { 12; }                 # Must not have argument
642      sub bar ($) { $_[0] * 7 }          # Must have exactly one argument
643      sub foo ($@) { print "@_\n" }      # Must have at least one argument
644      foo bar baz / 2 || "oops", "is the answer";
645  
646  This prints "42 is the answer" on my machine.  That is, it's the same as
647  
648      foo( bar( baz() / 2) || "oops", "is the answer");
649  
650  Attempting to compile
651  
652      foo;
653  
654  results in
655  
656      Too few arguments for main::foo at ./try line 8, near "foo;"
657  
658  Compiling
659  
660      bar 1,2,3;
661  
662  results in
663  
664      Too many arguments for main::bar at ./try line 8, near "foo;"
665      
666  But
667  
668      @array = ('a','b','c');
669      foo @array, @array;
670      
671  prints "3 a b c" because the $ puts the first arg of foo into scalar context.
672  
673  The main win at this point is that we can say
674  
675      sub AAA () { 1; }
676      sub BBB () { 2; }
677  
678  and the user can say AAA + BBB and get 3.
679  
680  I'm not quite sure how this interacts with autoloading though.  I fear
681  POSIX.pm will need to say
682  
683      sub E2BIG ();
684      sub EACCES ();
685      sub EAGAIN ();
686      sub EBADF ();
687      sub EBUSY ();
688      ...
689      sub _SC_STREAM_MAX ();
690      sub _SC_TZNAME_MAX ();
691      sub _SC_VERSION ();
692  
693  unless we can figure out how to efficiently declare a default prototype
694  at import time.  Meaning, not using eval.  Currently
695  
696      *foo = \&bar;
697  
698  (the ordinary import mechanism) implicitly stubs &bar with no prototype if
699  &bar is not yet declared.  It's almost like you want an AUTOPROTO to
700  go with your AUTOLOAD.
701  
702  Another thing to rub one's 5 o'clock shadow over is that there's no way
703  to apply a prototype to a method call at compile time.
704  
705  And no, I don't want to have the
706  
707      sub howabout ($formal, @arguments) { ... }
708  
709  argument right now.
710  
711  Larry
712
713 NETaa14444: lexical scalar didn't autovivify
714 From: Gurusamy Sarathy
715 Files patched: op.c pp_hot.c
716  It didn't have code in pp_padsv to do the right thing.
717
718 NETaa14448: caller could dump core when used within an eval or require
719 From: Danny R. Faught
720 Files patched: pp_ctl.c
721  caller() was incorrectly assuming the context stack contained a subroutine
722  context when it in fact contained an eval context.
723
724 NETaa14451: improved error message on bad pipe filehandle
725 From: Danny R. Faught
726 Files patched: pp_sys.c
727  Now says the slightly more informative
728  
729      Can't use an undefined value as filehandle reference at ./try line 3.
730
731 NETaa14462: pp_dbstate had a scope leakage on recursion suppression
732 From: Tim Bunce
733 Files patched: pp_ctl.c
734  Swapped the code in question around.
735
736 NETaa14482: sv_unref freed ref prematurely at times
737 From: Gurusamy Sarathy
738 Files patched: sv.c
739  Made sv_unref() mortalize rather than free the old reference.
740
741 NETaa14484: appending string to array produced bizarre results
742 From: Greg Ward
743 Also: Malcolm Beattie
744 Files patched: pp_hot.c
745  Will now say, "Can't coerce ARRAY to string".
746
747 NETaa14525: assignment to globs didn't reset them correctly
748 From: Gurusamy Sarathy
749 Files patched: sv.c
750  Applied parts of patch not overridden by subsequent patch.
751
752 NETaa14529: a partially matching subpattern could spoof infinity detector
753 From: Wayne Berke
754 Files patched: regexec.c
755  A partial match on a subpattern could fool the infinite regress detector
756  into thinking progress had been made.
757  The previous workaround prevented another bug (NETaa14529) from being fixed,
758  so I've backed it out.  I'll need to think more about how to detect failure
759  to progress.  I'm still hopeful it's not equivalent to the halting problem.
760
761 NETaa14535: patches from Gurusamy Sarathy
762 From: Gurusamy Sarathy
763 Files patched: op.c pp.c pp_hot.c regexec.c sv.c toke.c
764  Applied most recent suggested patches.
765
766 NETaa14538: method calls were treated like do {} under loop modifiers
767 From: Ilya Zakharevich
768 Files patched: perly.c perly.y
769  Needed to take the OPf_SPECIAL flag off of entersubs from method reductions.
770  (It was probably a cut-and-paste error from long ago.)
771
772 NETaa14540: foreach (@array) no longer does extra stack copy
773 From: darrinm@lmc.com
774 Files patched: Todo op.c pp_ctl.c pp_hot.c
775  Fixed by doing the foreach(@array) optimization, so it iterates
776  directly through the array, and can detect the implicit shift from
777  referencing <>.
778
779 NETaa14548: magic sets didn't check private OK bits
780 From: W. Bradley Rubenstein
781 Files patched: mg.c
782  The magic code was getting mixed up between private and public POK bits.
783
784 NETaa14550: made ~ magic magical
785 From: Tim Bunce
786 Files patched: sv.c
787  Applied suggested patch.
788
789 NETaa14551: humongous header causes infinite loop in format
790 From: Grace Lee
791 Files patched: pp_sys.c
792  Needed to check for page exhaustion after doing top-of-form.
793
794 NETaa14558: attempt to call undefined top format core dumped
795 From: Hallvard B Furuseth
796 Files patched: pod/perldiag.pod pp_sys.c
797  Now issues an error on attempts to call a non-existent top format.
798
799 NETaa14561: Gurusamy Sarathy's G_KEEPERR patch
800 From: Andreas Koenig
801 Also: Gurusamy Sarathy
802 Also: Tim Bunce
803 Files patched: cop.h interp.sym perl.c perl.h pp_ctl.c pp_sys.c sv.c toke.c
804  Applied latest patch.
805
806 NETaa14581: shouldn't execute BEGIN when there are compilation errors
807 From: Rickard Westman
808 Files patched: op.c
809  Perl should not try to execute BEGIN and END blocks if there's been a
810  compilation error.
811
812 NETaa14582: got SEGV sorting sparse array
813 From: Rick Pluta
814 Files patched: pp_ctl.c
815  Now weeds out undefined values much like Perl 4 did.
816  Now sorts undefined values to the front.
817
818 NETaa14582: sort was letting unsortable values through to comparison routine
819 Files patched: pp_ctl.c
820  (same)
821
822 NETaa14614: now does dbmopen with perl_eval_sv()
823 From: The Man
824 Files patched: perl.c pp_sys.c proto.h
825  dbmopen now invokes perl_eval_sv(), which should handle error conditions
826  better.
827
828 NETaa14636: Jumbo Dynaloader patch
829 From: Tim Bunce
830 Files patched: ext/DynaLoader/DynaLoader.pm ext/DynaLoader/dl_dld.xs
831     ext/DynaLoader/dl_dlopen.xs ext/DynaLoader/dl_hpux.xs
832     ext/DynaLoader/dl_next.xs ext/DynaLoader/dl_vms.xs ext/DynaLoader/dlutils.c
833  Applied suggested patches.
834
835 NETaa14637: checkcomma routine was stupid about bareword sub calls
836 From: Tim Bunce <Tim.Bunce@ig.co.uk>
837 Files patched: toke.c
838  The checkcomma routine was stupid about bareword sub calls.
839
840 NETaa14639: (?i) didn't reset on runtime patterns
841 From: Mark A. Scheel
842 Files patched: op.h pp_ctl.c toke.c
843  It didn't distinguish between permanent flags outside the pattern and
844  temporary flags within the pattern.
845
846 NETaa14649: selecting anonymous globs dumps core
847 From: Chip Salzenberg
848 Files patched: cop.h doio.c embed.h global.sym perl.c pp_sys.c proto.h
849  Applied suggested patch, but reversed the increment and decrement to avoid
850  decrementing and freeing what we're going to increment.
851
852 NETaa14655: $? returned negative value on AIX
853 From: Kim Frutiger
854 Also: Stephen D. Lee
855 Files patched: pp_sys.c
856  Applied suggested patch.
857
858 NETaa14658: infinite loop in c2ph
859 From: Nick Gianniotis
860 Files patched: c2ph.SH
861  Applied suggested patch.
862
863 NETaa14668: {2,} could match once
864 From: Hugo van der Sanden
865 Files patched: regexec.c
866  When an internal pattern failed a conjecture, it didn't back off on the
867  number of times it thought it had matched.
868
869 NETaa14673: open $undefined dumped core
870 From: Samuli K{rkk{inen
871 Files patched: pp_sys.c
872  pp_open() didn't check its argument for globness.
873
874 NETaa14683: stringifies were running pad out of space
875 From: Robin Barker
876 Files patched: op.h toke.c
877  Increased PADOFFSET to a U32, and made lexer not put double-quoted strings
878  inside OP_STRINGIFY unless they really needed it.
879
880 NETaa14689: shouldn't have . in @INC when tainting
881 From: William R. Somsky
882 Files patched: perl.c
883  Now does not put . into @INC when tainting.  It may still be added with a 
884  
885      use lib ".";
886  
887  or, to put it at the end,
888  
889      BEGIN { push(@INC, ".") }
890  
891  but this is not recommended unless a chdir to a known location has been done
892  first.
893
894 NETaa14690: values inside tainted SVs were ignored
895 From: "James M. Stern"
896 Files patched: pp.c pp_ctl.c
897  It was assuming that a tainted value was a string.
898
899 NETaa14692: format name required qualification under use strict
900 From: Tom Christiansen
901 Files patched: gv.c
902  Now treats format names the same as subroutine names.
903
904 NETaa14695: added simple regexp caching
905 From: John Rowe
906 Files patched: pp_ctl.c
907  Applied suggested patch.
908
909 NETaa14697: regexp comments were sometimes wrongly treated as literal text
910 From: Tom Christiansen
911 Files patched: regcomp.c
912  The literal-character grabber didn't know about extended comments.
913  
914  (By the way, Tom, the boxed form of quoting in the previous enclosure is
915  exceeding antisocial when you want to extract the code from it.)
916
917 NETaa14704: closure got wrong outer scope if outer sub was predeclared
918 From: Marc Paquette
919 Files patched: op.c
920  The outer scope of the anonymous sub was set to the stub rather than to
921  the actual subroutine.  I kludged it by making the outer scope of the
922  stub be the actual subroutine, if anything is depending on the stub.
923
924 NETaa14705: $foo .= $foo did free memory read
925 From: Gerd Knops
926 Files patched: sv.c
927  Now modifies address to copy if it was reallocated.
928
929 NETaa14711: added (&) and (*) prototypes for blocks and symbols
930 From: Kenneth Albanowski
931 Files patched: Makefile.SH op.c perly.c perly.h perly.y toke.c
932  & now means that it must have an anonymous sub as that argument.  If
933  it's the first argument, the sub may be specified as a block in the
934  indirect object slot, much like grep or sort, which have prototypes of (&@).
935  
936  Also added * so you can do things like
937  
938      sub myopen (*;$);
939  
940      myopen(FOO, $filename);
941
942 NETaa14713: setuid FROM root now defaults to not do tainting
943 From: Tony Camas
944 Files patched: mg.c perl.c pp_hot.c
945  Applied suggested patch.
946
947 NETaa14714: duplicate magics could be added to an SV
948 From: Yary Hluchan
949 Files patched: sv.c sv.c
950  The sv_magic() routine didn't properly check to see if it already had a
951  magic of that type.  Ordinarily it would have, but it was called during
952  mg_get(), which forces the magic flags off temporarily.
953
954 NETaa14734: ref should never return undef
955 From: Dale Amon
956 Files patched: pp.c t/op/overload.t
957  Now returns null string.
958
959 NETaa14751: slice of undefs now returns null list
960 From: Tim Bunce
961 Files patched: pp.c pp_hot.c
962  Null list clobberation is now done in lslice, not aassign.
963
964 NETaa14789: select coredumped on Linux
965 From: Ulrich Kunitz
966 Files patched: pp_sys.c
967  Applied suggested patches, more or less.
968
969 NETaa14789: straightened out ins and out of duping
970 Files patched: lib/IPC/Open3.pm
971  (same)
972
973 NETaa14791: implemented internal SUPER class
974 From: Nick Ing-Simmons
975 Also: Dean Roehrich
976 Files patched: gv.c
977  Applied suggested patch.
978
979 NETaa14845: s/// didn't handle offset strings
980 From: Ken MacLeod
981 Files patched: pp_ctl.c
982  Needed a call to SvOOK_off(targ) in pp_substcont().
983
984 NETaa14851: Use of << to mean <<"" is deprecated
985 From: Larry Wall
986 Files patched: toke.c
987
988 NETaa14865: added HINT_BLOCK_SCOPE to "elsif"
989 From: Jim Avera
990 Files patched: perly.y
991  Needed to set HINT_BLOCK_SCOPE on "elsif" to prevent the do block from
992  being optimized away, which caused the statement transition in elsif
993  to reset the stack too far back.
994
995 NETaa14876: couldn't delete localized GV safely
996 From: John Hughes
997 Files patched: pp.c scope.c
998  The reference count of the "borrowed" GV needed to be incremented while
999  there was a reference to it in the savestack.
1000
1001 NETaa14887: couldn't negate magical scalars
1002 From: ian
1003 Also: Gurusamy Sarathy
1004 Files patched: pp.c
1005  Applied suggested patch, more or less.  (It's not necessary to test both
1006  SvNIOK and SvNIOKp, since the private bits are always set if the public
1007  bits are set.)
1008
1009 NETaa14893: /m modifier was sticky
1010 From: Jim Avera
1011 Files patched: pp_ctl.c
1012  pp_match() and pp_subst() were using an improperly scoped SAVEINT to restore
1013  the value of the internal variable multiline.
1014
1015 NETaa14893: /m modifier was sticky     
1016 Files patched: cop.h pp_hot.c
1017  (same)
1018
1019 Needed to make install paths absolute.
1020 Files patched: installperl
1021
1022 derived it
1023 Files patched: perly.h
1024
1025 makedir() looped on a symlink to a directory.
1026 Files patched: installperl
1027
1028
1029 -------------
1030 Version 5.001
1031 -------------
1032
1033 Nearly all the changes for 5.001 were bug fixes of one variety or another,
1034 so here's the bug list, along with the "resolution" for each of them.  If
1035 you wish to correspond about any of them, please include the bug number.
1036
1037 There were a few that can be construed as enhancements:
1038     NETaa13059: now warns of use of \1 where $1 is necessary.
1039     NETaa13512: added $SIG{__WARN__} and $SIG{__DIE__} hooks
1040     NETaa13520: added closures
1041     NETaa13530: scalar keys now resets hash iterator
1042     NETaa13641: added Tim's fancy new import whizbangers
1043     NETaa13710: cryptswitch needed to be more "useable"
1044     NETaa13716: Carp now allows multiple packages to be skipped out of
1045     NETaa13716: now counts imported routines as "defined" for redef warnings
1046     (and, of course, much of the stuff from the perl5-porters)
1047
1048 NETaa12974: README incorrectly said it was a pre-release.
1049 Files patched: README
1050
1051 NETaa13033: goto pushed a bogus scope on the context stack.
1052 From: Steve Vinoski
1053 Files patched: pp_ctl.c
1054  The goto operator pushed an extra bogus scope onto the context stack.  (This
1055  often didn't matter, since many things pop extra unrecognized scopes off.)
1056
1057 NETaa13034: tried to get valid pointer from undef.
1058 From: Castor Fu
1059 Also:  Achille Hui, the Day Dreamer 
1060 Also: Eric Arnold
1061 Files patched: pp_sys.c
1062  Now treats undef specially, and calls SvPV_force on any non-numeric scalar
1063  value to get a real pointer to somewhere.
1064
1065 NETaa13035: included package info with filehandles.
1066 From: Jack Shirazi - BIU
1067 Files patched: pp_hot.c pp_sys.c
1068  Now passes a glob to filehandle methods to keep the package info intact.
1069
1070 NETaa13048: didn't give strict vars message on every occurrence.
1071 From: Doug Campbell
1072 Files patched: gv.c
1073  It now complains about every occurrence.  (The bug resulted from an
1074  ill-conceived attempt to suppress a duplicate error message in a
1075  suboptimal fashion.)
1076
1077 NETaa13052: test for numeric sort sub return value fooled by taint magic.
1078 From: Peter Jaspers-Fayer
1079 Files patched: pp_ctl.c sv.h
1080  The test to see if the sort sub return value was numeric looked at the
1081  public flags rather than the private flags of the SV, so taint magic
1082  hid that info from the sort.
1083
1084 NETaa13053: forced a2p to use byacc
1085 From: Andy Dougherty
1086 Files patched: MANIFEST x2p/Makefile.SH x2p/a2p.c
1087  a2p.c is now pre-byacced and shipped with the kit.
1088
1089 NETaa13055: misnamed constant in previous patch.
1090 From: Conrad Augustin
1091 Files patched: op.c op.h toke.c
1092  The tokener translates $[ to a constant, but with a special marking in case
1093  the constant gets assigned to or localized.  Unfortunately, the marking
1094  was done with a combination of OPf_SPECIAL and OPf_MOD that was easily
1095  spoofed.  There is now a private OPpCONST_ARYLEN flag for this purpose.
1096
1097 NETaa13055: use of OPf_SPECIAL for $[ lvaluehood was too fragile.
1098 Files patched: op.c op.h toke.c
1099  (same)
1100
1101 NETaa13056: convert needs to throw away any number info on its list.
1102 From: Jack Shirazi - BIU
1103 Files patched: op.c
1104  The listiness of the argument list leaked out to the subroutine call because
1105  of how prepend_elem and append_elem reuse an existing list.  The convert()
1106  routine just needs to discard any listiness it finds on its argument.
1107
1108 NETaa13058: AUTOLOAD shouldn't assume size of @_ is meaningful.
1109 From: Florent Guillaume
1110 Files patched: ext/DB_File/DB_File.pm ext/Fcntl/Fcntl.pm ext/GDBM_File/GDBM_File.pm ext/Socket/Socket.pm h2xs.SH
1111  I just deleted the optimization, which is silly anyway since the eventual
1112  subroutine definition is cached.
1113
1114 NETaa13059: now warns of use of \1 where $1 is necessary.
1115 From: Gustaf Neumann
1116 Files patched: toke.c
1117  Now says
1118  
1119      Can't use \1 to mean $1 in expression at foo line 2
1120  
1121  along with an explanation in perldiag.
1122
1123 NETaa13060: no longer warns on attempt to read <> operator's transition state.
1124 From: Chaim Frenkel
1125 Files patched: pp_hot.c
1126  No longer warns on <> operator's transitional state.
1127
1128 NETaa13140: warning said $ when @ would be more appropriate.
1129 From: David J. MacKenzie
1130 Files patched: op.c pod/perldiag.pod
1131  Now says
1132  
1133      (Did you mean $ or @ instead of %?)
1134  
1135  and added more explanation to perldiag.
1136
1137 NETaa13149: was reading freed memory to make incorrect error message.
1138 Files patched: pp_ctl.c
1139  It was reading freed memory to make an error message that would be
1140  incorrect in any event because it had the inner filename rather than
1141  the outer.
1142
1143 NETaa13149: confess was sometimes less informative than croak
1144 From: Jack Shirazi
1145 Files patched: lib/Carp.pm
1146  (same)
1147
1148 NETaa13150: stderr needs to be STDERR in package
1149 From: Jack Shirazi
1150 Files patched: lib/File/CheckTree.pm
1151  Also fixed pl2pm to translate the filehandles to uppercase.
1152
1153 NETaa13150: uppercases stdin, stdout and stderr
1154 Files patched: pl2pm
1155  (same)
1156
1157 NETaa13154: array assignment didn't notice package magic.
1158 From: Brian Reichert
1159 Files patched: pp_hot.c
1160  The list assignment operator looked for only set magic, but set magic is
1161  only on the elements of a magical hash, not on the hash as a whole.  I made
1162  the operator look for any magic at all on the target array or hash.
1163
1164 NETaa13155: &DB::DB left trash on the stack.
1165 From: Thomas Koenig
1166 Files patched: lib/perl5db.pl pp_ctl.c
1167  The call by pp_dbstate() to &DB::DB left trash on the stack.  It now
1168  calls DB in list context, and DB returns ().
1169
1170 NETaa13156: lexical variables didn't show up in debugger evals.
1171 From: Joergen Haegg
1172 Files patched: op.c
1173  The code that searched back up the context stack for the lexical scope
1174  outside the eval only partially took into consideration that there
1175  might be extra debugger subroutine frames that shouldn't be used, and
1176  ended up comparing the wrong statement sequence number to the range of
1177  valid sequence numbers for the scope of the lexical variable.  (There
1178  was also a bug fixed in passing that caused the scope of lexical to go
1179  clear to the end of the subroutine even if it was within an inner block.)
1180
1181 NETaa13157: any request for autoloaded DESTROY should create a null one.
1182 From: Tom Christiansen
1183 Files patched: lib/AutoLoader.pm
1184  If DESTROY.al is not located, it now creates sub DESTROY {} automatically.
1185
1186 NETaa13158: now preserves $@ around destructors while leaving eval.
1187 From: Tim Bunce
1188 Files patched: pp_ctl.c
1189  Applied supplied patch, except the whole second hunk can be replaced with
1190  
1191      sv_insert(errsv, 0, 0, message, strlen(message));
1192
1193 NETaa13160: clarified behavior of split without arguments
1194 From: Harry Edmon
1195 Files patched: pod/perlfunc.pod
1196  Clarified the behavior of split without arguments.
1197
1198 NETaa13162: eval {} lost list/scalar context
1199 From: Dov Grobgeld
1200 Files patched: op.c
1201  LEAVETRY didn't propagate number to ENTERTRY.
1202
1203 NETaa13163: clarified documentation of foreach using my variable
1204 From: Tom Christiansen
1205 Files patched: pod/perlsyn.pod
1206  Explained that foreach using a lexical is still localized.
1207
1208 NETaa13164: the dot detector for the end of formats was over-rambunctious.
1209 From: John Stoffel
1210 Files patched: toke.c
1211  The dot detector for the end of formats was over-rambunctious.  It would
1212  pick up any dot that didn't have a space in front of it.
1213
1214 NETaa13165: do {} while 1 never linked outer block into next chain.
1215 From: Gisle Aas
1216 Files patched: op.c
1217  When the conditional of do {} while 1; was optimized away, it confused the
1218  postfix order construction so that the block that ordinarily sits around the
1219  whole loop was never executed.  So when the loop tried to unstack between
1220  iterations, it got the wrong context, and blew away the lexical variables
1221  of the outer scope.  Fixed it by introducing a NULL opcode that will be
1222  optimized away later.
1223
1224 NETaa13167: coercion was looking at public bits rather than private bits.
1225 From: Randal L. Schwartz
1226 Also: Thomas Riechmann
1227 Also: Shane Castle
1228 Files patched: sv.c
1229  There were some bad ifdefs around the various varieties of set*id().  In
1230  addition, tainting was interacting badly with assignment to $> because
1231  sv_2iv() was examining SvPOK rather than SvPOKp, and so couldn't coerce
1232  a string uid to an integer one.
1233
1234 NETaa13167: had some ifdefs wrong on set*id.
1235 Files patched: mg.c pp_hot.c
1236  (same)
1237
1238 NETaa13168: relaxed test for comparison of new and old fds
1239 From: Casper H.S. Dik
1240 Files patched: t/lib/posix.t
1241  I relaxed the comparison to just check that the new fd is greater.
1242
1243 NETaa13169: autoincrement can corrupt scalar value state.
1244 From: Gisle Aas
1245 Also: Tom Christiansen
1246 Files patched: sv.c
1247  It assumed a PV didn't need to be upgraded to become an NV.
1248
1249 NETaa13169: previous patch could leak a string pointer.
1250 Files patched: sv.c
1251  (same)
1252
1253 NETaa13170: symbols missing from global.sym
1254 From: Tim Bunce
1255 Files patched: global.sym
1256  Applied suggested patch.
1257
1258 NETaa13171: \\ in <<'END' shouldn't reduce to \.
1259 From: Randal L. Schwartz
1260 Files patched: toke.c
1261  <<'END' needed to bypass ordinary single-quote processing.
1262
1263 NETaa13172: 'use integer' turned off magical autoincrement.
1264 From: Erich Rickheit KSC
1265 Files patched: pp.c pp_hot.c
1266  The integer versions of the increment and decrement operators were trying too
1267  hard to be efficient.
1268
1269 NETaa13172: deleted duplicate increment and decrement code
1270 Files patched: opcode.h opcode.pl pp.c
1271  (same)
1272
1273 NETaa13173: install should make shared libraries executable.
1274 From: Brian Grossman
1275 Also: Dave Nadler
1276 Also: Eero Pajarre
1277 Files patched: installperl
1278  Now gives permission 555 to any file ending with extension specified by $dlext.
1279
1280 NETaa13176: ck_rvconst didn't free the const it used up.
1281 From: Nick Duffek
1282 Files patched: op.c
1283  I checked in many random memory leaks under this bug number, since it
1284  was an eval that brought many of them out.
1285
1286 NETaa13176: didn't delete XRV for temp ref of destructor.
1287 Files patched: sv.c
1288  (same)
1289
1290 NETaa13176: didn't delete op_pmshort in matching operators.
1291 Files patched: op.c
1292  (same)
1293
1294 NETaa13176: eval leaked the name of the eval.
1295 Files patched: scope.c
1296  (same)
1297
1298 NETaa13176: gp_free didn't free the format.
1299 Files patched: gv.c
1300  (same)
1301
1302 NETaa13176: minor leaks in loop exits and constant subscript optimization.
1303 Files patched: op.c
1304  (same)
1305
1306 NETaa13176: plugged some duplicate struct allocation memory leaks.
1307 Files patched: perl.c
1308  (same)
1309
1310 NETaa13176: sv_clear of an FM didn't clear anything.
1311 Files patched: sv.c
1312  (same)
1313
1314 NETaa13176: tr/// didn't mortalize its return value.
1315 Files patched: pp.c
1316  (same)
1317
1318 NETaa13177: SCOPE optimization hid line number info
1319 From: David J. MacKenzie
1320 Also: Hallvard B Furuseth
1321 Files patched: op.c
1322  Every pass on the syntax tree has to keep track of the current statement.
1323  Unfortunately, the single-statement block was optimized into a single
1324  statement between the time the variable was parsed and the time the
1325  void code scan was done, so that pass didn't see the OP_NEXTSTATE
1326  operator, because it has been optimized to an OP_NULL.
1327  
1328  Fortunately, null operands remember what they were, so it was pretty easy
1329  to make it set the correct line number anyway.
1330
1331 NETaa13178: some linux doesn't handle nm well
1332 From: Alan Modra
1333 Files patched: hints/linux.sh
1334  Applied supplied patch.
1335
1336 NETaa13180: localized slice now pre-extends array
1337 From: Larry Schuler
1338 Files patched: pp.c
1339  A localized slice now pre-extends its array to avoid reallocation during
1340  the scope of the local.
1341
1342 NETaa13181: m//g didn't keep track of whether previous match matched null.
1343 From: "philippe.verdret"
1344 Files patched: mg.h pp_hot.c
1345  A pattern isn't allowed to match a null string in the same place twice in
1346  a row.  m//g wasn't keeping track of whether the previous match matched
1347  the null string.
1348
1349 NETaa13182: now includes whitespace as a regexp metacharacter.
1350 From: Larry Wall
1351 Files patched: toke.c
1352  scan_const() now counts " \t\n\r\f\v" as metacharacters when scanning a pattern.
1353
1354 NETaa13183: sv_setsv shouldn't try to clone an object.
1355 From: Peter Gordon
1356 Files patched: sv.c
1357  The sv_mortalcopy() done by the return in STORE called sv_setsv(),
1358  which cloned the object.  sv_setsv() shouldn't be in the business of
1359  cloning objects.
1360
1361 NETaa13184: bogus warning on quoted signal handler name removed.
1362 From: Dan Carson
1363 Files patched: toke.c
1364  Now doesn't complain unless the first non-whitespace character after the =
1365  is an alphabetic character.
1366
1367 NETaa13186: now croaks on chop($')
1368 From: Casper H.S. Dik
1369 Files patched: doop.c
1370  Now croaks on chop($') and such.
1371
1372 NETaa13187: "${foo::bar}" now counts as mere delimitation, not as a bareword.
1373 From: Jay Rogers
1374 Files patched: toke.c
1375  "${foo::bar}" now counts as mere delimitation, not as a bareword inside a
1376  reference block.
1377
1378 NETaa13188: for backward compatibility, looks for "perl -" before "perl".
1379 From: Russell Mosemann
1380 Files patched: toke.c
1381  Now allows non-whitespace characters on the #! line between the "perl"
1382  and the "-".
1383
1384 NETaa13188: now allows non-whitespace after #!...perl before switches.
1385 Files patched: toke.c
1386  (same)
1387
1388 NETaa13189: derivative files need to be removed before recreation
1389 From: Simon Leinen
1390 Also: Dick Middleton
1391 Also: David J. MacKenzie
1392 Files patched: embed_h.sh x2p/Makefile.SH
1393  Fixed various little nits as suggested in several messages.
1394
1395 NETaa13190: certain assignments can spoof pod directive recognizer
1396 From: Ilya Zakharevich
1397 Files patched: toke.c
1398  The lexer now only recognizes pod directives where a statement is expected.
1399
1400 NETaa13194: now returns undef when there is no curpm.
1401 From: lusol@Dillon.CC.Lehigh.EDU
1402 Files patched: mg.c
1403  Since there was no regexp prior to the "use", it was returning whatever the
1404  last successful match was within the "use", because there was no current
1405  regexp, so it treated it as a normal variable.  It now returns undef.
1406
1407 NETaa13195: semop had one S too many.
1408 From: Joachim Huober
1409 Files patched: opcode.pl
1410  The entry in opcode.pl had one too many S's.
1411
1412 NETaa13196: always assumes it's a Perl script if -c is used.
1413 From: Dan Carson
1414 Files patched: toke.c
1415  It now will assume it's a Perl script if the -c switch is used.
1416
1417 NETaa13197: changed implicit -> message to be more understandable.
1418 From: Bruce Barnett
1419 Files patched: op.c pod/perldiag.pod
1420  I changed the error message to be more understandable.  It now says
1421  
1422      Can't use subscript on sort...
1423  
1424
1425 NETaa13201: added OPpCONST_ENTERED flag to properly enter filehandle symbols.
1426 From: E. Jay Berkenbilt
1427 Also: Tom Christiansen
1428 Files patched: op.c op.h toke.c
1429  The grammatical reduction of a print statement didn't properly count
1430  the filehandle as a symbol reference because it couldn't distinguish
1431  between a symbol entered earlier in the program and a symbol entered
1432  for the first time down in the lexer.
1433
1434 NETaa13203: README shouldn't mention uperl.o any more.
1435 From: Anno Siegel
1436 Files patched: README
1437
1438 NETaa13204: .= shouldn't warn on uninitialized target.
1439 From: Pete Peterson
1440 Files patched: pp_hot.c
1441  No longer warns on uninitialized target of .= operator.
1442
1443 NETaa13206: handy macros in XSUB.h
1444 From: Tim Bunce
1445 Files patched: XSUB.h
1446  Added suggested macros.
1447
1448 NETaa13228: commonality checker didn't treat lexicals as variables.
1449 From: mcook@cognex.com
1450 Files patched: op.c opcode.pl
1451  The list assignment operator tries to avoid unnecessary copies by doing the
1452  assignment directly if there are no common variables on either side of the
1453  equals.  Unfortunately, the code that decided that only recognized references
1454  to dynamic variables, not lexical variables.
1455
1456 NETaa13229: fixed sign stuff for complement, integer coercion.
1457 From: Larry Wall
1458 Files patched: perl.h pp.c sv.c
1459  Fixed ~0 and integer coercions.
1460
1461 NETaa13230: no longer tries to reuse scratchpad temps if tainting in effect.
1462 From: Luca Fini
1463 Files patched: op.c
1464  I haven't reproduced it, but I believe the problem is the reuse of scratchpad
1465  temporaries between statements.  I've made it not try to reuse them if
1466  tainting is in effect.
1467
1468 NETaa13231: *foo = *bar now prevents typo warnings on "foo"
1469 From: Robin Barker
1470 Files patched: sv.c
1471  Aliasing of the form *foo = *bar is now protected from the typo warnings.
1472  Previously only the *foo = \$bar form was.
1473
1474 NETaa13235: require BAREWORD now introduces package name immediately.
1475 From: Larry Wall
1476 Files patched: toke.c
1477  require BAREWORD now introduces package name immediately.  This lets the
1478  method intuit code work right even though the require hasn't actually run
1479  yet.
1480
1481 NETaa13289: didn't calculate correctly using arybase.
1482 From: Jared Rhine
1483 Files patched: pp.c pp_hot.c
1484  The runtime code didn't use curcop->cop_arybase correctly.
1485
1486 NETaa13301: store now throws exception on error
1487 From: Barry Friedman
1488 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
1489  Changed warn to croak in ext/*DBM_File/*.xs.
1490
1491 NETaa13302: ctime now takes Time_t rather than Time_t*.
1492 From: Rodger Anderson
1493 Files patched: ext/POSIX/POSIX.xs
1494  Now declares a Time_t and takes the address of that in CODE.
1495
1496 NETaa13302: shorter way to do this patch
1497 Files patched: ext/POSIX/POSIX.xs
1498  (same)
1499
1500 NETaa13304: could feed too large $@ back into croak, whereupon it croaked.
1501 From: Larry Wall
1502 Files patched: perl.c
1503  callist() could feed $@ back into croak with more than a bare %s.  (croak()
1504  handles long strings with a bare %s okay.)
1505
1506 NETaa13305: compiler misoptimized RHS to outside of s/a/print/e
1507 From: Brian S. Cashman <bsc@umich.edu>
1508 Files patched: op.c
1509  The syntax tree was being misconstructed because the compiler felt that
1510  the RHS was invariant, so it did it outside the s///.
1511
1512 NETaa13314: assigning mortal to lexical leaks
1513 From: Larry Wall
1514 Files patched: sv.c
1515  In stealing strings, sv_setsv was checking SvPOK to see if it should free
1516  the destination string.  It should have been checking SvPVX.
1517
1518 NETaa13316: wait4pid now recalled when errno == EINTR
1519 From: Robert J. Pankratz
1520 Files patched: pp_sys.c util.c
1521  system() and the close() of a piped open now recall wait4pid if it returned
1522  prematurely with errno == EINTR.
1523
1524 NETaa13329: needed to localize taint magic
1525 From: Brian Katzung
1526 Files patched: sv.c doio.c mg.c pp_hot.c pp_sys.c scope.c taint.c
1527  Taint magic is now localized better, though I had to resort to a kludge
1528  to allow a value to be both tainted and untainted simultaneously during
1529  the assignment of
1530  
1531      local $foo = $_[0];
1532  
1533  when $_[0] is a reference to the variable $foo already.
1534
1535 NETaa13341: clarified interaction of AnyDBM_File::ISA and "use"
1536 From: Ian Phillipps
1537 Files patched: pod/modpods/AnyDBMFile.pod
1538  The doc was misleading.
1539
1540 NETaa13342: grep and map with block would enter block but never leave it.
1541 From: Ian Phillipps
1542 Files patched: op.c
1543  The compiler use some sort-checking code to handle the arguments of
1544  grep and map.  Unfortunately, this wiped out the block exit opcode while
1545  leaving the block entry opcode.  This doesn't matter to sort, but did
1546  matter to grep and map.  It now leave the block entry intact.
1547  
1548  The reason it worked without the my is because the block entry and exit
1549  were optimized away to an OP_SCOPE, which it doesn't matter if it's there
1550  or not.
1551
1552 NETaa13343: goto needed to longjmp when in a signal handler.
1553 From: Robert Partington
1554 Files patched: pp_ctl.c
1555  goto needed to longjmp() when in a signal handler to get back into the
1556  right run() context.
1557  
1558
1559 NETaa13344: strict vars shouldn't apply to globs or filehandles.
1560 From: Andrew Wilcox
1561 Files patched: gv.c
1562  Filehandles and globs will be excepted from "strict vars", so that you can
1563  do the standard Perl 4 trick of
1564  
1565      use strict;
1566      sub foo {
1567          local(*IN);
1568          open(IN,"file");
1569      }
1570  
1571
1572 NETaa13345: assert.pl didn't use package DB
1573 From: Hans Mulder
1574 Files patched: lib/assert.pl
1575  Now it does.
1576
1577 NETaa13348: av_undef didn't free scalar representing $#foo.
1578 From: David Filo
1579 Files patched: av.c
1580  av_undef didn't free scalar representing $#foo.
1581
1582 NETaa13349: sort sub accumulated save stack entries
1583 From: David Filo
1584 Files patched: pp_ctl.c
1585  COMMON only gets set if assigning to @_, which is reasonable.  Most of the
1586  problem was a memory leak.
1587
1588 NETaa13351: didn't treat indirect filehandles as references.
1589 From: Andy Dougherty
1590 Files patched: op.c
1591  Now produces
1592  
1593  Can't use an undefined value as a symbol reference at ./foo line 3.
1594  
1595
1596 NETaa13352: OP_SCOPE allocated as UNOP rather than LISTOP.
1597 From: Andy Dougherty
1598 Files patched: op.c
1599
1600 NETaa13353: scope() didn't release filegv on OP_SCOPE optimization.
1601 From: Larry Wall
1602 Files patched: op.c
1603  When scope() nulled out a NEXTSTATE, it didn't release its filegv reference.
1604
1605 NETaa13355: hv_delete now avoids useless mortalcopy
1606 From: Larry Wall
1607 Files patched: hv.c op.c pp.c pp_ctl.c proto.h scope.c util.c
1608  hv_delete now avoids useless mortalcopy.
1609  
1610
1611 NETaa13359: comma operator section missing its heading
1612 From: Larry Wall
1613 Files patched: pod/perlop.pod
1614
1615 NETaa13359: random typo
1616 Files patched: pod/perldiag.pod
1617
1618 NETaa13360: code to handle partial vec values was bogus.
1619 From: Conrad Augustin
1620 Files patched: pp.c
1621  The code that Mark J. added a long time ago to handle values that were partially
1622  off the end of the string was incorrect.
1623
1624 NETaa13361: made it not interpolate inside regexp comments
1625 From: Martin Jost
1626 Files patched: toke.c
1627  To avoid surprising people, it no longer interpolates inside regexp
1628  comments.
1629
1630 NETaa13362: ${q[1]} should be interpreted like it used to
1631 From: Hans Mulder
1632 Files patched: toke.c
1633  Now resolves ${keyword[1]} to $keyword[1] and warns if -w.  Likewise for {}.
1634
1635 NETaa13363: meaning of repeated search chars undocumented in tr///
1636 From: Stephen P. Potter
1637 Files patched: pod/perlop.pod
1638  Documented that repeated characters use the first translation given.
1639
1640 NETaa13365: if closedir fails, don't try it again.
1641 From: Frank Crawford
1642 Files patched: pp_sys.c
1643  Now does not attempt to closedir a second time.
1644
1645 NETaa13366: can't do block scope optimization on $1 et al when tainting.
1646 From: Andrew Vignaux
1647 Files patched: toke.c
1648  The tainting mechanism assumes that every statement starts out
1649  untainted.  Unfortunately, the scope removal optimization for very
1650  short blocks removed the statementhood of statements that were
1651  attempting to read $1 as an untainted value, with the effect that $1
1652  appeared to be tainted anyway.  The optimization is now disabled when
1653  tainting and the block contains $1 (or equivalent).
1654
1655 NETaa13366: fixed this a better way in toke.c.
1656 Files patched: op.c
1657  (same)
1658
1659 NETaa13366: need to disable scope optimization when tainting.
1660 Files patched: op.c
1661  (same)
1662
1663 NETaa13367: Did a SvCUR_set without nulling out final char.
1664 From: "Rob Henderson" <robh@cs.indiana.edu>
1665 Files patched: doop.c pp.c pp_sys.c
1666  When do_vop set the length on its result string it neglected to null-terminate
1667  it.
1668
1669 NETaa13368: bigrat::norm sometimes chucked sign
1670 From: Greg Kuperberg
1671 Files patched: lib/bigrat.pl
1672  The normalization routine was assuming that the gcd of two numbers was
1673  never negative, and based on that assumption managed to move the sign
1674  to the denominator, where it was deleted on the assumption that the
1675  denominator is always positive.
1676
1677 NETaa13368: botched previous patch
1678 Files patched: lib/bigrat.pl
1679  (same)
1680
1681 NETaa13369: # is now a comment character, and \# should be left for regcomp.
1682 From: Simon Parsons
1683 Files patched: toke.c
1684  It was not skipping the comment when it skipped the white space, and constructed
1685  an opcode that tried to match a null string.  Unfortunately, the previous
1686  star tried to use the first character of the null string to optimize where
1687  to recurse, so it never matched.
1688
1689 NETaa13369: comment after regexp quantifier induced non-match.
1690 Files patched: regcomp.c
1691  (same)
1692
1693 NETaa13370: some code assumed SvCUR was of type int.
1694 From: Spider Boardman
1695 Files patched: pp_sys.c
1696  Did something similar to the proposed patch.  I also fixed the problem that
1697  it assumed the type of SvCUR was int.  And fixed get{peer,sock}name the
1698  same way.
1699
1700 NETaa13375: sometimes dontbother wasn't added back into strend.
1701 From: Jamshid Afshar
1702 Files patched: regexec.c
1703  When the /g modifier was used, the regular expression code would calculate
1704  the end of $' too short by the minimum number of characters the pattern could
1705  match.
1706
1707 NETaa13375: sv_setpvn now disallows negative length.
1708 Files patched: sv.c
1709  (same)
1710
1711 NETaa13376: suspected indirect objecthood prevented recognition of lexical.
1712 From: Gisle.Aas@nr.no
1713 Files patched: toke.c
1714  When $data[0] is used in a spot that might be an indirect object, the lexer
1715  was getting confused over the rule that says the $data in $$data[0] isn't
1716  an array element.  (The lexer uses XREF state for both indirect objects
1717  and for variables used as names.)
1718
1719 NETaa13377: -I processesing ate remainder of #! line.
1720 From: Darrell Schiebel
1721 Files patched: perl.c
1722  I made the -I processing in moreswitches look for the end of the string,
1723  delimited by whitespace.
1724
1725 NETaa13379: ${foo} now treated the same outside quotes as inside
1726 From: Hans Mulder
1727 Files patched: toke.c
1728  ${bareword} is now treated the same outside quotes as inside.
1729
1730 NETaa13379: previous fix for this bug was botched
1731 Files patched: toke.c
1732  (same)
1733
1734 NETaa13381: TEST should check for perl link
1735 From: Andy Dougherty
1736 Files patched: t/TEST
1737  die "You need to run \"make test\" first to set things up.\n" unless -e 'perl';
1738  
1739
1740 NETaa13384: fixed version 0.000 botch.
1741 From: Larry Wall
1742 Files patched: installperl
1743
1744 NETaa13385: return 0 from required file loses message
1745 From: Malcolm Beattie
1746 Files patched: pp_ctl.c
1747  Works right now.
1748
1749 NETaa13387: added pod2latex
1750 From: Taro KAWAGISHI
1751 Files patched: MANIFEST pod/pod2latex
1752  Added most recent copy to pod directory.
1753
1754 NETaa13388: constant folding now prefers integer results over double
1755 From: Ilya Zakharevich
1756 Files patched: op.c
1757  Constant folding now prefers integer results over double.
1758
1759 NETaa13389: now treats . and exec as shell metathingies
1760 From: Hans Mulder
1761 Files patched: doio.c
1762  Now treats . and exec as shell metathingies.
1763
1764 NETaa13395: eval didn't check taintedness.
1765 From: Larry Wall
1766 Files patched: pp_ctl.c
1767
1768 NETaa13396: $^ coredumps at end of string
1769 From: Paul Rogers
1770 Files patched: toke.c
1771  The scan_ident() didn't check for a null following $^.
1772
1773 NETaa13397: improved error messages when operator expected
1774 From: Larry Wall
1775 Files patched: toke.c
1776  Added message (Do you need to predeclare BAR?).  Also fixed the missing
1777  semicolon message.
1778
1779 NETaa13399: cleanup by Andy
1780 From: Larry Wall
1781 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
1782
1783 NETaa13399: cleanup from Andy
1784 Files patched: MANIFEST
1785
1786 NETaa13399: configuration cleanup
1787 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
1788
1789 NETaa13399: new files from Andy
1790 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
1791
1792 NETaa13399: patch0l from Andy
1793 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
1794
1795 NETaa13399: stuff from Andy
1796 Files patched: Configure MANIFEST Makefile.SH configpm hints/dec_osf.sh hints/linux.sh hints/machten.sh lib/ExtUtils/MakeMaker.pm util.c
1797
1798 NETaa13399: Patch 0k from Andy
1799 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
1800
1801 NETaa13399: Patch 0m from Andy
1802 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
1803
1804 NETaa13400: pod2html update from Bill Middleton
1805 From: Larry Wall
1806 Files patched: pod/pod2html
1807
1808 NETaa13401: Boyer-Moore code attempts to compile string longer than 255.
1809 From: Kyriakos Georgiou
1810 Files patched: util.c
1811  The Boyer-Moore table uses unsigned char offsets, but the BM compiler wasn't
1812  rejecting strings longer than 255 chars, and was miscompiling them.
1813
1814 NETaa13403: missing a $ on variable name
1815 From: Wayne Scott
1816 Files patched: installperl
1817  Yup, it was missing.
1818
1819 NETaa13406: didn't wipe out dead match when proceeding to next BRANCH
1820 From: Michael P. Clemens
1821 Files patched: regexec.c
1822  The code to check alternatives didn't invalidate backreferences matched by the
1823  failed branch.
1824
1825 NETaa13407: overload upgrade
1826 From: owner-perl5-porters@nicoh.com
1827 Also: Ilya Zakharevich
1828 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
1829  Applied supplied patch, and fixed bug induced by use of sv_setsv to do
1830  a deep copy, since sv_setsv no longer copies objecthood.
1831
1832 NETaa13409: sv_gets tries to grow string at EOF
1833 From: Harold O Morris
1834 Files patched: sv.c
1835  Applied suggested patch, only two statements earlier, since the end code
1836  also does SvCUR_set.
1837
1838 NETaa13410: delaymagic did =~ instead of &= ~
1839 From: Andreas Schwab
1840 Files patched: pp_hot.c
1841  Applied supplied patch.
1842
1843 NETaa13411: POSIX didn't compile under -DLEAKTEST
1844 From: Frederic Chauveau
1845 Files patched: ext/POSIX/POSIX.xs
1846  Used NEWSV instead of newSV.
1847
1848 NETaa13412: new version from Tony Sanders
1849 From: Tony Sanders
1850 Files patched: lib/Term/Cap.pm
1851  Installed as Term::Cap.pm
1852
1853 NETaa13413: regmust extractor needed to restart loop on BRANCH for (?:) to work
1854 From: DESARMENIEN
1855 Files patched: regcomp.c
1856  The BRANCH skipper should have restarted the loop from the top.
1857
1858 NETaa13414: the check for accidental list context was done after pm_short check
1859 From: Michael H. Coen
1860 Files patched: pp_hot.c
1861  Moved check for accidental list context to before the pm_short optimization.
1862
1863 NETaa13418: perlre.pod babbled nonsense about | in character classes
1864 From: Philip Hazel
1865 Files patched: pod/perlre.pod
1866  Removed bogus brackets.  Now reads:
1867      Note however that "|" is interpreted as a literal with square brackets,
1868      so if you write C<[fee|fie|foe]> you're really only matching C<[feio|]>.
1869
1870 NETaa13419: need to document introduction of lexical variables
1871 From: "Heading, Anthony"
1872 Files patched: pod/perlfunc.pod
1873  Now mentions that lexicals aren't introduced till after the current statement.
1874
1875 NETaa13420: formats that overflowed a page caused endless top of forms
1876 From: Hildo@CONSUL.NL
1877 Files patched: pp_sys.c
1878  If a record is too large to fit on a page, it now prints whatever will
1879  fit and then calls top of form again on the remainder.
1880
1881 NETaa13423: the code to do negative list subscript in scalar context was missing
1882 From: Steve McDougall
1883 Files patched: pp.c
1884  The negative subscript code worked right in list context but not in scalar
1885  context.  In fact, there wasn't code to do it in the scalar context.
1886
1887 NETaa13424: existing but undefined CV blocked inheritance
1888 From: Spider Boardman
1889 Files patched: gv.c
1890  Applied supplied patch.
1891
1892 NETaa13425: removed extra argument to croak
1893 From: "R. Bernstein"
1894 Files patched: regcomp.c
1895  Removed extra argument.
1896
1897 NETaa13427: added return types
1898 From: "R. Bernstein"
1899 Files patched: x2p/a2py.c
1900  Applied suggested patch.
1901
1902 NETaa13427: added static declarations
1903 Files patched: x2p/walk.c
1904  (same)
1905
1906 NETaa13428: split was assuming that all backreferences were defined
1907 From: Dave Schweisguth
1908 Files patched: pp.c
1909  split was assuming that all backreferences were defined.
1910
1911 NETaa13430: hoistmust wasn't hoisting anchored shortcircuit's length
1912 From: Tom Christiansen
1913 Also: Rob Hooft
1914 Files patched: toke.c
1915
1916 NETaa13432: couldn't call code ref under debugger
1917 From: Mike Fletcher
1918 Files patched: op.c pp_hot.c sv.h
1919  The debugging code assumed it could remember a name to represent a subroutine,
1920  but anonymous subroutines don't have a name.  It now remembers a CV reference
1921  in that case.
1922
1923 NETaa13435: 1' dumped core
1924 From: Larry Wall
1925 Files patched: toke.c
1926  Didn't check a pointer for nullness.
1927
1928 NETaa13436: print foo(123) didn't treat foo as subroutine
1929 From: mcook@cognex.com
1930 Files patched: toke.c
1931  Now treats it as a subroutine rather than a filehandle.
1932
1933 NETaa13437: &$::foo didn't think $::foo was a variable name
1934 From: mcook@cognex.com
1935 Files patched: toke.c
1936  Now treats $::foo as a global variable.
1937
1938 NETaa13439: referred to old package name
1939 From: Tom Christiansen
1940 Files patched: lib/Sys/Syslog.pm
1941  Wasn't a strict refs problem after all.  It was simply referring to package
1942  syslog, which had been renamed to Sys::Syslog.
1943
1944 NETaa13440: stat operations didn't know what to do with glob or ref to glob
1945 From: mcook@cognex.com
1946 Files patched: doio.c pp_sys.c
1947  Now knows about the kinds of filehandles returned by FileHandle constructors
1948  and such.
1949
1950 NETaa13442: couldn't find name of copy of deleted symbol table entry
1951 From: Spider Boardman
1952 Files patched: gv.c gv.h
1953  I did a much simpler fix.  When gp_free notices that it's freeing the
1954  master GV, it nulls out gp_egv.  The GvENAME and GvESTASH macros know
1955  to revert to gv if egv is null.
1956  
1957  This has the advantage of not creating a reference loop.
1958
1959 NETaa13443: couldn't override an XSUB
1960 From: William Setzer
1961 Files patched: op.c
1962  When the newSUB and newXS routines checked for whether the old sub was
1963  defined, they only looked at CvROOT(cv), not CvXSUB(cv).
1964
1965 NETaa13443: needed to do same thing in newXS
1966 Files patched: op.c
1967  (same)
1968
1969 NETaa13444: -foo now doesn't warn unless sub foo is defined
1970 From: Larry Wall
1971 Files patched: toke.c
1972  Made it not warn on -foo, unless there is a sub foo defined.
1973
1974 NETaa13451: in scalar context, pp_entersub now guarantees one item from XSUB
1975 From: Nick Gianniotis
1976 Files patched: pp_hot.c
1977  The pp_entersub routine now guarantees that an XSUB in scalar context
1978  returns one and only one value.  If there are fewer, it pushes undef,
1979  and if there are more, it returns the last one.
1980
1981 NETaa13457: now explicitly disallows printf format with 'n' or '*'.
1982 From: lees@cps.msu.edu
1983 Files patched: doop.c
1984  Now says
1985  
1986      Use of n in printf format not supported at ./foo line 3.
1987  
1988
1989 NETaa13458: needed to call SvPOK_only() in pp_substr
1990 From: Wayne Scott
1991 Files patched: pp.c
1992  Needed to call SvPOK_only() in pp_substr.
1993
1994 NETaa13459: umask and chmod now warn about missing initial 0 even with paren
1995 From: Andreas Koenig
1996 Files patched: toke.c
1997  Now skips parens as well as whitespace looking for argument.
1998
1999 NETaa13460: backtracking didn't work on .*? because reginput got clobbered
2000 From: Andreas Koenig
2001 Files patched: regexec.c
2002  When .*? did a probe of the rest of the string, it clobbered reginput,
2003  so the next call to match a . tried to match the newline and failed.
2004
2005 NETaa13475: \(@ary) now treats array as list of scalars
2006 From: Tim Bunce
2007 Files patched: op.c
2008  The mod() routine now refrains from marking @ary as an lvalue if it's in parens
2009  and is the subject of an OP_REFGEN.
2010
2011 NETaa13481: accept buffer wasn't aligned good enough
2012 From: Holger Bechtold
2013 Also: Christian Murphy
2014 Files patched: pp_sys.c
2015  Applied suggested patch.
2016
2017 NETaa13486: while (<>) now means while (defined($_ = <>))
2018 From: Jim Balter
2019 Files patched: op.c pod/perlop.pod
2020  while (<HANDLE>) now means while (defined($_ = <HANDLE>)).
2021
2022 NETaa13500: needed DESTROY in FileHandle
2023 From: Tim Bunce
2024 Files patched: ext/POSIX/POSIX.pm
2025  Added DESTROY method.  Also fixed ungensym to use POSIX:: instead of _POSIX.
2026  Removed ungensym from close method, since DESTROY should do that now.
2027
2028 NETaa13502: now complains if you use local on a lexical variable
2029 From: Larry Wall
2030 Files patched: op.c
2031  Now says something like
2032  
2033      Can't localize lexical variable $var at ./try line 6.
2034
2035 NETaa13512: added $SIG{__WARN__} and $SIG{__DIE__} hooks
2036 From: Larry Wall
2037 Files patched: embed.h gv.c interp.sym mg.c perl.h pod/perlvar.pod pp_ctl.c util.c Todo pod/perldiag.pod
2038
2039 NETaa13514: statements before intro of lex var could see lex var
2040 From: William Setzer
2041 Files patched: op.c
2042  When a lexical variable is declared, introduction is delayed until
2043  the start of the next statement, so that any initialization code runs
2044  outside the scope of the new variable.  Thus,
2045  
2046      my $y = 3;
2047      my $y = $y;
2048      print $y;
2049  
2050  should print 3.  Unfortunately, the declaration was marked with the
2051  beginning location at the time that "my $y" was processed instead of 
2052  when the variable was introduced, so any embedded statements within
2053  an anonymous subroutine picked up the wrong "my".  The declaration
2054  is now labelled correctly when the variable is actually introduced.
2055
2056 NETaa13520: added closures
2057 From: Larry Wall
2058 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
2059
2060 NETaa13520: test to see if lexical works in a format now
2061 Files patched: t/op/write.t
2062
2063 NETaa13522: substitution couldn't be used on a substr()
2064 From: Hans Mulder
2065 Files patched: pp_ctl.c pp_hot.c
2066  Changed pp_subst not to use sv_replace() anymore, which didn't handle lvalues
2067  and was overkill anyway.  Should be slightly faster this way too.
2068
2069 NETaa13525: G_EVAL mode in perl_call_sv didn't return values right.
2070 Files patched: perl.c
2071
2072 NETaa13525: consolidated error message
2073 From: Larry Wall
2074 Files patched: perl.h toke.c
2075
2076 NETaa13525: derived it
2077 Files patched: perly.h
2078
2079 NETaa13525: missing some values from embed.h
2080 Files patched: embed.h
2081
2082 NETaa13525: random cleanup
2083 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
2084
2085 NETaa13525: random cleanup                  
2086 Files patched: pp_ctl.c util.c
2087
2088 NETaa13527: File::Find needed to export $name and $dir
2089 From: Chaim Frenkel
2090 Files patched: lib/File/Find.pm
2091  They are now exported.
2092
2093 NETaa13528: cv_undef left unaccounted-for GV pointer in CV
2094 From: Tye McQueen
2095 Also: Spider Boardman
2096 Files patched: op.c
2097
2098 NETaa13530: scalar keys now resets hash iterator
2099 From: Tim Bunce
2100 Files patched: doop.c
2101  scalar keys() now resets the hash iterator.
2102
2103 NETaa13531: h2ph doesn't check defined right
2104 From: Casper H.S. Dik
2105 Files patched: h2ph.SH
2106
2107 NETaa13540: VMS update
2108 From: Larry Wall
2109 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
2110
2111 NETaa13540: got some duplicate code
2112 Files patched: lib/File/Path.pm
2113
2114 NETaa13540: stuff from Charles
2115 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
2116
2117 NETaa13540: tweak from Charles
2118 Files patched: lib/File/Path.pm
2119
2120 NETaa13552: scalar unpack("P4",...) ignored the 4
2121 From: Eric Arnold
2122 Files patched: pp.c
2123  The optimization that tried to do only one item in a scalar context didn't
2124  realize that the argument to P was not a repeat count.
2125
2126 NETaa13553: now warns about 8 or 9 in octal escapes
2127 From: Mike Rogers
2128 Files patched: util.c
2129  Now warns if it finds 8 or 9 before the end of the octal escape sequence.
2130  So \039 produces a warning, but \0339 does not.
2131
2132 NETaa13554: now allows foreach ${"name"}
2133 From: Johan Holtman
2134 Files patched: op.c
2135  Instead of trying to remove OP_RV2SV, the compiler now just transmutes it into an
2136  OP_RV2GV, which is a no-op for ordinary variables and does the right
2137  thing for ${"name"}.
2138
2139 NETaa13559: substitution now always checks for readonly
2140 From: Rodger Anderson
2141 Files patched: pp_hot.c
2142  Substitution now always checks for readonly.
2143
2144 NETaa13561: added explanations of closures and curly-quotes
2145 From: Larry Wall
2146 Files patched: pod/perlref.pod
2147
2148 NETaa13562: null components in path cause indigestion
2149 From: Ambrose Kofi Laing
2150 Files patched: lib/Cwd.pm lib/pwd.pl
2151
2152 NETaa13575: documented semantics of negative substr length
2153 From: Jeff Bouis
2154 Files patched: pod/perlfunc.pod
2155  Documented the fact that negative length now leaves characters off the end,
2156  and while I was at it, made it work right even if offset wasn't 0.
2157
2158 NETaa13575: negative length to substr didn't work when offset non-zero
2159 Files patched: pp.c
2160  (same)
2161
2162 NETaa13575: random cleanup
2163 Files patched: pod/perlfunc.pod
2164  (same)
2165
2166 NETaa13580: couldn't localize $ACCUMULATOR
2167 From: Larry Wall
2168 Files patched: gv.c lib/English.pm mg.c perl.c sv.c
2169  Needed to make $^A a real magical variable.  Also lib/English.pm wasn't
2170  exporting good.
2171
2172 NETaa13583: doc mods from Tom
2173 From: Larry Wall
2174 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
2175
2176 NETaa13589: return was enforcing list context on its arguments
2177 From: Tim Freeman
2178 Files patched: opcode.pl
2179  A return was being treated like a normal list operator, in that it was
2180  setting list context on its arguments.  This was bogus.
2181
2182 NETaa13591: POSIX::creat used wrong argument
2183 From: Paul Marquess
2184 Files patched: ext/POSIX/POSIX.pm
2185  Applied suggested patch.
2186
2187 NETaa13605: use strict refs error message now displays bad ref
2188 From: Peter Gordon
2189 Files patched: perl.h pod/perldiag.pod pp.c pp_hot.c
2190  Now says
2191  
2192      Can't use string ("2") as a HASH ref while "strict refs" in use at ./foo line 12.
2193
2194 NETaa13630: eof docs were unclear
2195 From: Hallvard B Furuseth
2196 Files patched: pod/perlfunc.pod
2197  Applied suggested patch.
2198
2199 NETaa13636: $< and $> weren't refetched on undump restart
2200 From: Steve Pearlmutter
2201 Files patched: perl.c
2202  The code in main() bypassed perl_construct on an undump restart, which bypassed
2203  the code that set $< and $>.
2204
2205 NETaa13641: added Tim's fancy new import whizbangers
2206 From: Tim Bunce
2207 Files patched: lib/Exporter.pm
2208  Applied suggested patch.
2209
2210 NETaa13649: couldn't AUTOLOAD a symbol reference
2211 From: Larry Wall
2212 Files patched: pp_hot.c
2213  pp_entersub needed to guarantee a CV so it would get to the AUTOLOAD code.
2214
2215 NETaa13651: renamed file had wrong package name
2216 From: Andreas Koenig
2217 Files patched: lib/File/Path.pm
2218  Applied suggested patch.
2219
2220 NETaa13660: now that we're testing distribution we can diagnose RANDBITS errors
2221 From: Karl Glazebrook
2222 Files patched: t/op/rand.t
2223  Changed to suggested algorithm.  Also duplicated it to test rand(100) too.
2224
2225 NETaa13660: rand.t didn't test for proper distribution within range
2226 Files patched: t/op/rand.t
2227  (same)
2228
2229 NETaa13671: array slice misbehaved in a scalar context
2230 From: Tye McQueen
2231 Files patched: pp.c
2232  A spurious else prevented the scalar-context-handling code from running.
2233
2234 NETaa13672: filehandle constructors in POSIX don't return failure successfully
2235 From: Ian Phillipps
2236 Files patched: ext/POSIX/POSIX.pm
2237  Applied suggested patch.
2238  
2239
2240 NETaa13678: forced $1 to always be untainted
2241 From: Ka-Ping Yee
2242 Files patched: mg.c
2243  I believe the bug that triggered this was fixed elsewhere, but just in case,
2244  I put in explicit code to force $1 et al not to be tainted regardless.
2245
2246 NETaa13682: formline doc need to discuss ~ and ~~ policy
2247 From: Peter Gordon
2248 Files patched: pod/perlfunc.pod
2249
2250 NETaa13686: POSIX::open and POSIX::mkfifo didn't check tainting
2251 From: Larry Wall
2252 Files patched: ext/POSIX/POSIX.xs
2253  open() and mkfifo() now check tainting.
2254
2255 NETaa13687: new Exporter.pm
2256 From: Tim Bunce
2257 Files patched: lib/Exporter.pm
2258  Added suggested changes, except for @EXPORTABLE, because it looks too much
2259  like @EXPORTTABLE.  Decided to stick with @EXPORT_OK because it looks more
2260  like an adjunct.  Also added an export_tags routine.  The keys in the
2261  %EXPORT_TAGS hash no longer use colons, to make the initializers prettier.
2262
2263 NETaa13687: new Exporter.pm      
2264 Files patched: ext/POSIX/POSIX.pm
2265  (same)
2266
2267 NETaa13694: add sockaddr_in to Socket.pm
2268 From: Tim Bunce
2269 Files patched: ext/Socket/Socket.pm
2270  Applied suggested patch.
2271
2272 NETaa13695: library routines should use qw() as good example
2273 From: Dean Roehrich
2274 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
2275  Applied suggested patch.
2276
2277 NETaa13696: myconfig should be a routine in Config.pm
2278 From: Kenneth Albanowski
2279 Files patched: configpm
2280  Applied suggested patch.
2281
2282 NETaa13704: fdopen closed fd on failure
2283 From: Hallvard B Furuseth
2284 Files patched: doio.c
2285  Applied suggested patch.
2286
2287 NETaa13706: Term::Cap doesn't work
2288 From: Dean Roehrich
2289 Files patched: lib/Term/Cap.pm
2290  Applied suggested patch.
2291
2292 NETaa13710: cryptswitch needed to be more "useable"
2293 From: Tim Bunce
2294 Files patched: embed.h global.sym perl.h toke.c
2295  The cryptswitch_fp function now can operate in two modes.  It can
2296  modify the global rsfp to redirect input as before, or it can modify
2297  linestr and return true, indicating that it is not necessary for yylex
2298  to read another line since cryptswitch_fp has just done it.
2299
2300 NETaa13712: new_tmpfile() can't be called as constructor
2301 From: Hans Mulder
2302 Files patched: ext/POSIX/POSIX.xs
2303  Now allows new_tmpfile() to be called as a constructor.
2304
2305 NETaa13714: variable method call not documented
2306 From: "Randal L. Schwartz"
2307 Files patched: pod/perlobj.pod
2308  Now indicates that OBJECT->$method() works.
2309
2310 NETaa13715: PACK->$method produces spurious warning
2311 From: Larry Wall
2312 Files patched: toke.c
2313  The -> operator was telling the lexer to expect an operator when the
2314  next thing was a variable.
2315
2316 NETaa13716: Carp now allows multiple packages to be skipped out of
2317 From: Larry Wall
2318 Files patched: lib/Carp.pm
2319  The subroutine redefinition warnings now warn on import collisions.
2320
2321 NETaa13716: Exporter catches warnings and gives a better line number
2322 Files patched: lib/Exporter.pm
2323  (same)
2324
2325 NETaa13716: now counts imported routines as "defined" for redef warnings
2326 Files patched: op.c sv.c
2327  (same)
2328
2329 -------------
2330 Version 5.000
2331 -------------
2332
2333 New things
2334 ----------
2335     The -w switch is much more informative.
2336
2337     References.  See t/op/ref.t for examples.  All entities in Perl 5 are
2338     reference counted so that it knows when each item should be destroyed.
2339
2340     Objects.  See t/op/ref.t for examples.
2341
2342     => is now a synonym for comma.  This is useful as documentation for
2343     arguments that come in pairs, such as initializers for associative arrays,
2344     or named arguments to a subroutine.
2345
2346     All functions have been turned into list operators or unary operators,
2347     meaning the parens are optional.  Even subroutines may be called as
2348     list operators if they've already been declared.
2349
2350     More embeddible.  See main.c and embed_h.sh.  Multiple interpreters
2351     in the same process are supported (though not with interleaved
2352     execution yet).
2353
2354     The interpreter is now flattened out.  Compare Perl 4's eval.c with
2355     the perl 5's pp.c.  Compare Perl 4's 900 line interpreter loop in cmd.c
2356     with Perl 5's 1 line interpreter loop in run.c.  Eventually we'll make
2357     everything non-blocking so we can interface nicely with a scheduler.
2358
2359     eval is now treated more like a subroutine call.  Among other things,
2360     this means you can return from it.
2361
2362     Format value lists may be spread over multiple lines by enclosing in
2363     a do {} block.
2364
2365     You may now define BEGIN and END subroutines for each package.  The BEGIN
2366     subroutine executes the moment it's parsed.  The END subroutine executes
2367     just before exiting.
2368
2369     Flags on the #! line are interpreted even if the script wasn't
2370     executed directly.  (And even if the script was located by "perl -x"!)
2371
2372     The ?: operator is now legal as an lvalue.
2373
2374     List context now propagates to the right side of && and ||, as well
2375     as the 2nd and 3rd arguments to ?:.
2376
2377     The "defined" function can now take a general expression.
2378
2379     Lexical scoping available via "my".  eval can see the current lexical
2380     variables.
2381
2382     The preferred package delimiter is now :: rather than '.
2383
2384     tie/untie are now preferred to dbmopen/dbmclose.  Multiple DBM
2385     implementations are allowed in the same executable, so you can
2386     write scripts to interchange data among different formats.
2387
2388     New "and" and "or" operators work just like && and || but with
2389     a precedence lower than comma, so they work better with list operators.
2390
2391     New functions include: abs(), chr(), uc(), ucfirst(), lc(), lcfirst(),
2392     chomp(), glob()
2393
2394     require with a number checks to see that the version of Perl that is
2395     currently running is at least that number.
2396
2397     Dynamic loading of external modules is now supported.
2398
2399     There is a new quote form qw//, which is equivalent to split(' ', q//).
2400
2401     Assignment of a reference to a glob value now just replaces the
2402     single element of the glob corresponding to the reference type:
2403         *foo = \$bar, *foo = \&bletch;
2404
2405     Filehandle methods are now supported:
2406         output_autoflush STDOUT 1;
2407
2408     There is now an "English" module that provides human readable translations
2409     for cryptic variable names.
2410
2411     Autoload stubs can now call the replacement subroutine with goto &realsub.
2412
2413     Subroutines can be defined lazily in any package by declaring an AUTOLOAD
2414     routine, which will be called if a non-existent subroutine is called in
2415     that package.
2416
2417     Several previously added features have been subsumed under the new
2418     keywords "use" and "no".  Saying "use Module LIST" is short for
2419         BEGIN { require Module; import Module LIST; }
2420     The "no" keyword is identical except that it calls "unimport" instead.
2421     The earlier pragma mechanism now uses this mechanism, and two new
2422     modules have been added to the library to implement "use integer"
2423     and variations of "use strict vars, refs, subs".
2424
2425     Variables may now be interpolated literally into a pattern by prefixing
2426     them with \Q, which works just like \U, but backwhacks non-alphanumerics
2427     instead.  There is also a corresponding quotemeta function.
2428
2429     Any quantifier in a regular expression may now be followed by a ? to
2430     indicate that the pattern is supposed to match as little as possible.
2431
2432     Pattern matches may now be followed by an m or s modifier to explicitly
2433     request multiline or singleline semantics.  An s modifier makes . match
2434     newline.
2435
2436     Patterns may now contain \A to match only at the beginning of the string,
2437     and \Z to match only at the end.  These differ from ^ and $ in that
2438     they ignore multiline semantics.  In addition, \G matches where the
2439     last interation of m//g or s///g left off.
2440
2441     Non-backreference-producing parens of various sorts may now be
2442     indicated by placing a ? directly after the opening parenthesis,
2443     followed by a character that indicates the purpose of the parens.
2444     An :, for instance, indicates simple grouping.  (?:a|b|c) will
2445     match any of a, b or c without producing a backreference.  It does
2446     "eat" the input.  There are also assertions which do not eat the
2447     input but do lookahead for you.  (?=stuff) indicates that the next
2448     thing must be "stuff".  (?!nonsense) indicates that the next thing
2449     must not be "nonsense".
2450
2451     The negation operator now treats non-numeric strings specially.
2452     A -"text" is turned into "-text", so that -bareword is the same
2453     as "-bareword".  If the string already begins with a + or -, it
2454     is flipped to the other sign.
2455
2456 Incompatibilities
2457 -----------------
2458     @ now always interpolates an array in double-quotish strings.  Some programs
2459     may now need to use backslash to protect any @ that shouldn't interpolate.
2460
2461     Ordinary variables starting with underscore are no longer forced into
2462     package main.
2463
2464     s'$lhs'$rhs' now does no interpolation on either side.  It used to
2465     interplolate $lhs but not $rhs.
2466
2467     The second and third arguments of splice are now evaluated in scalar
2468     context (like the book says) rather than list context.
2469
2470     Saying "shift @foo + 20" is now a semantic error because of precedence.
2471
2472     "open FOO || die" is now incorrect.  You need parens around the filehandle.
2473
2474     The elements of argument lists for formats are now evaluated in list
2475     context.  This means you can interpolate list values now.
2476
2477     You can't do a goto into a block that is optimized away.  Darn.
2478
2479     It is no longer syntactically legal to use whitespace as the name
2480     of a variable, or as a delimiter for any kind of quote construct.
2481
2482     Some error messages will be different.
2483
2484     The caller function now returns a false value in a scalar context if there
2485     is no caller.  This lets library files determine if they're being required.
2486
2487     m//g now attaches its state to the searched string rather than the
2488     regular expression.
2489
2490     "reverse" is no longer allowed as the name of a sort subroutine.
2491
2492     taintperl is no longer a separate executable.  There is now a -T
2493     switch to turn on tainting when it isn't turned on automatically.
2494
2495     Symbols starting with _ are no longer forced into package main, except
2496     for $_ itself (and @_, etc.).
2497
2498     Double-quoted strings may no longer end with an unescaped $ or @.
2499
2500     Negative array subscripts now count from the end of the array.
2501
2502     The comma operator in a scalar context is now guaranteed to give a
2503     scalar context to its arguments.
2504
2505     The ** operator now binds more tightly than unary minus.
2506
2507     Setting $#array lower now discards array elements so that destructors
2508     work reasonably.
2509
2510     delete is not guaranteed to return the old value for tied arrays,
2511     since this capability may be onerous for some modules to implement.
2512
2513     Attempts to set $1 through $9 now result in a run-time error.