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.
9 There were a few that can be construed as enhancements:
10 NETaa13059: now warns of use of \1 where $1 is necessary.
11 NETaa13512: added $SIG{__WARN__} and $SIG{__DIE__} hooks
12 NETaa13520: added closures
13 NETaa13530: scalar keys now resets hash iterator
14 NETaa13641: added Tim's fancy new import whizbangers
15 NETaa13710: cryptswitch needed to be more "useable"
16 NETaa13716: Carp now allows multiple packages to be skipped out of
17 NETaa13716: now counts imported routines as "defined" for redef warnings
18 (and, of course, much of the stuff from the perl5-porters)
20 NETaa12974: README incorrectly said it was a pre-release.
23 NETaa13033: goto pushed a bogus scope on the context stack.
25 Files patched: pp_ctl.c
26 The goto operator pushed an extra bogus scope onto the context stack. (This
27 often didn't matter, since many things pop extra unrecognized scopes off.)
29 NETaa13034: tried to get valid pointer from undef.
31 Also: Achille Hui, the Day Dreamer
33 Files patched: pp_sys.c
34 Now treats undef specially, and calls SvPV_force on any non-numeric scalar
35 value to get a real pointer to somewhere.
37 NETaa13035: included package info with filehandles.
38 From: Jack Shirazi - BIU
39 Files patched: pp_hot.c pp_sys.c
40 Now passes a glob to filehandle methods to keep the package info intact.
42 NETaa13048: didn't give strict vars message on every occurrence.
45 It now complains about every occurrence. (The bug resulted from an
46 ill-conceived attempt to suppress a duplicate error message in a
49 NETaa13052: test for numeric sort sub return value fooled by taint magic.
50 From: Peter Jaspers-Fayer
51 Files patched: pp_ctl.c sv.h
52 The test to see if the sort sub return value was numeric looked at the
53 public flags rather than the private flags of the SV, so taint magic
54 hid that info from the sort.
56 NETaa13053: forced a2p to use byacc
58 Files patched: MANIFEST x2p/Makefile.SH x2p/a2p.c
59 a2p.c is now pre-byacced and shipped with the kit.
61 NETaa13055: misnamed constant in previous patch.
63 Files patched: op.c op.h toke.c
64 The tokener translates $[ to a constant, but with a special marking in case
65 the constant gets assigned to or localized. Unfortunately, the marking
66 was done with a combination of OPf_SPECIAL and OPf_MOD that was easily
67 spoofed. There is now a private OPpCONST_ARYLEN flag for this purpose.
69 NETaa13055: use of OPf_SPECIAL for $[ lvaluehood was too fragile.
70 Files patched: op.c op.h toke.c
73 NETaa13056: convert needs to throw away any number info on its list.
74 From: Jack Shirazi - BIU
76 The listiness of the argument list leaked out to the subroutine call because
77 of how prepend_elem and append_elem reuse an existing list. The convert()
78 routine just needs to discard any listiness it finds on its argument.
80 NETaa13058: AUTOLOAD shouldn't assume size of @_ is meaningful.
81 From: Florent Guillaume
82 Files patched: ext/DB_File/DB_File.pm ext/Fcntl/Fcntl.pm ext/GDBM_File/GDBM_File.pm ext/Socket/Socket.pm h2xs.SH
83 I just deleted the optimization, which is silly anyway since the eventual
84 subroutine definition is cached.
86 NETaa13059: now warns of use of \1 where $1 is necessary.
91 Can't use \1 to mean $1 in expression at foo line 2
93 along with an explanation in perldiag.
95 NETaa13060: no longer warns on attempt to read <> operator's transition state.
97 Files patched: pp_hot.c
98 No longer warns on <> operator's transitional state.
100 NETaa13140: warning said $ when @ would be more appropriate.
101 From: David J. MacKenzie
102 Files patched: op.c pod/perldiag.pod
105 (Did you mean $ or @ instead of %?)
107 and added more explanation to perldiag.
109 NETaa13149: was reading freed memory to make incorrect error message.
110 Files patched: pp_ctl.c
111 It was reading freed memory to make an error message that would be
112 incorrect in any event because it had the inner filename rather than
115 NETaa13149: confess was sometimes less informative than croak
117 Files patched: lib/Carp.pm
120 NETaa13150: stderr needs to be STDERR in package
122 Files patched: lib/File/CheckTree.pm
123 Also fixed pl2pm to translate the filehandles to uppercase.
125 NETaa13150: uppercases stdin, stdout and stderr
129 NETaa13154: array assignment didn't notice package magic.
131 Files patched: pp_hot.c
132 The list assignment operator looked for only set magic, but set magic is
133 only on the elements of a magical hash, not on the hash as a whole. I made
134 the operator look for any magic at all on the target array or hash.
136 NETaa13155: &DB::DB left trash on the stack.
138 Files patched: lib/perl5db.pl pp_ctl.c
139 The call by pp_dbstate() to &DB::DB left trash on the stack. It now
140 calls DB in list context, and DB returns ().
142 NETaa13156: lexical variables didn't show up in debugger evals.
145 The code that searched back up the context stack for the lexical scope
146 outside the eval only partially took into consideration that there
147 might be extra debugger subroutine frames that shouldn't be used, and
148 ended up comparing the wrong statement sequence number to the range of
149 valid sequence numbers for the scope of the lexical variable. (There
150 was also a bug fixed in passing that caused the scope of lexical to go
151 clear to the end of the subroutine even if it was within an inner block.)
153 NETaa13157: any request for autoloaded DESTROY should create a null one.
154 From: Tom Christiansen
155 Files patched: lib/AutoLoader.pm
156 If DESTROY.al is not located, it now creates sub DESTROY {} automatically.
158 NETaa13158: now preserves $@ around destructors while leaving eval.
160 Files patched: pp_ctl.c
161 Applied supplied patch, except the whole second hunk can be replaced with
163 sv_insert(errsv, 0, 0, message, strlen(message));
165 NETaa13160: clarified behavior of split without arguments
167 Files patched: pod/perlfunc.pod
168 Clarified the behavior of split without arguments.
170 NETaa13162: eval {} lost list/scalar context
173 LEAVETRY didn't propagate number to ENTERTRY.
175 NETaa13163: clarified documentation of foreach using my variable
176 From: Tom Christiansen
177 Files patched: pod/perlsyn.pod
178 Explained that foreach using a lexical is still localized.
180 NETaa13164: the dot detector for the end of formats was over-rambunctious.
182 Files patched: toke.c
183 The dot detector for the end of formats was over-rambunctious. It would
184 pick up any dot that didn't have a space in front of it.
186 NETaa13165: do {} while 1 never linked outer block into next chain.
189 When the conditional of do {} while 1; was optimized away, it confused the
190 postfix order construction so that the block that ordinarily sits around the
191 whole loop was never executed. So when the loop tried to unstack between
192 iterations, it got the wrong context, and blew away the lexical variables
193 of the outer scope. Fixed it by introducing a NULL opcode that will be
194 optimized away later.
196 NETaa13167: coercion was looking at public bits rather than private bits.
197 From: Randal L. Schwartz
198 Also: Thomas Riechmann
201 There were some bad ifdefs around the various varieties of set*id(). In
202 addition, tainting was interacting badly with assignment to $> because
203 sv_2iv() was examining SvPOK rather than SvPOKp, and so couldn't coerce
204 a string uid to an integer one.
206 NETaa13167: had some ifdefs wrong on set*id.
207 Files patched: mg.c pp_hot.c
210 NETaa13168: relaxed test for comparison of new and old fds
211 From: Casper H.S. Dik
212 Files patched: t/lib/posix.t
213 I relaxed the comparison to just check that the new fd is greater.
215 NETaa13169: autoincrement can corrupt scalar value state.
217 Also: Tom Christiansen
219 It assumed a PV didn't need to be upgraded to become an NV.
221 NETaa13169: previous patch could leak a string pointer.
225 NETaa13170: symbols missing from global.sym
227 Files patched: global.sym
228 Applied suggested patch.
230 NETaa13171: \\ in <<'END' shouldn't reduce to \.
231 From: Randal L. Schwartz
232 Files patched: toke.c
233 <<'END' needed to bypass ordinary single-quote processing.
235 NETaa13172: 'use integer' turned off magical autoincrement.
236 From: Erich Rickheit KSC
237 Files patched: pp.c pp_hot.c
238 The integer versions of the increment and decrement operators were trying too
239 hard to be efficient.
241 NETaa13172: deleted duplicate increment and decrement code
242 Files patched: opcode.h opcode.pl pp.c
245 NETaa13173: install should make shared libraries executable.
249 Files patched: installperl
250 Now gives permission 555 to any file ending with extension specified by $dlext.
252 NETaa13176: ck_rvconst didn't free the const it used up.
255 I checked in many random memory leaks under this bug number, since it
256 was an eval that brought many of them out.
258 NETaa13176: didn't delete XRV for temp ref of destructor.
262 NETaa13176: didn't delete op_pmshort in matching operators.
266 NETaa13176: eval leaked the name of the eval.
267 Files patched: scope.c
270 NETaa13176: gp_free didn't free the format.
274 NETaa13176: minor leaks in loop exits and constant subscript optimization.
278 NETaa13176: plugged some duplicate struct allocation memory leaks.
279 Files patched: perl.c
282 NETaa13176: sv_clear of an FM didn't clear anything.
286 NETaa13176: tr/// didn't mortalize its return value.
290 NETaa13177: SCOPE optimization hid line number info
291 From: David J. MacKenzie
292 Also: Hallvard B Furuseth
294 Every pass on the syntax tree has to keep track of the current statement.
295 Unfortunately, the single-statement block was optimized into a single
296 statement between the time the variable was parsed and the time the
297 void code scan was done, so that pass didn't see the OP_NEXTSTATE
298 operator, because it has been optimized to an OP_NULL.
300 Fortunately, null operands remember what they were, so it was pretty easy
301 to make it set the correct line number anyway.
303 NETaa13178: some linux doesn't handle nm well
305 Files patched: hints/linux.sh
306 Applied supplied patch.
308 NETaa13180: localized slice now pre-extends array
311 A localized slice now pre-extends its array to avoid reallocation during
312 the scope of the local.
314 NETaa13181: m//g didn't keep track of whether previous match matched null.
315 From: "philippe.verdret"
316 Files patched: mg.h pp_hot.c
317 A pattern isn't allowed to match a null string in the same place twice in
318 a row. m//g wasn't keeping track of whether the previous match matched
321 NETaa13182: now includes whitespace as a regexp metacharacter.
323 Files patched: toke.c
324 scan_const() now counts " \t\n\r\f\v" as metacharacters when scanning a pattern.
326 NETaa13183: sv_setsv shouldn't try to clone an object.
329 The sv_mortalcopy() done by the return in STORE called sv_setsv(),
330 which cloned the object. sv_setsv() shouldn't be in the business of
333 NETaa13184: bogus warning on quoted signal handler name removed.
335 Files patched: toke.c
336 Now doesn't complain unless the first non-whitespace character after the =
337 is an alphabetic character.
339 NETaa13186: now croaks on chop($')
340 From: Casper H.S. Dik
341 Files patched: doop.c
342 Now croaks on chop($') and such.
344 NETaa13187: "${foo::bar}" now counts as mere delimitation, not as a bareword.
346 Files patched: toke.c
347 "${foo::bar}" now counts as mere delimitation, not as a bareword inside a
350 NETaa13188: for backward compatibility, looks for "perl -" before "perl".
351 From: Russell Mosemann
352 Files patched: toke.c
353 Now allows non-whitespace characters on the #! line between the "perl"
356 NETaa13188: now allows non-whitespace after #!...perl before switches.
357 Files patched: toke.c
360 NETaa13189: derivative files need to be removed before recreation
363 Also: David J. MacKenzie
364 Files patched: embed_h.sh x2p/Makefile.SH
365 Fixed various little nits as suggested in several messages.
367 NETaa13190: certain assignments can spoof pod directive recognizer
368 From: Ilya Zakharevich
369 Files patched: toke.c
370 The lexer now only recognizes pod directives where a statement is expected.
372 NETaa13194: now returns undef when there is no curpm.
373 From: lusol@Dillon.CC.Lehigh.EDU
375 Since there was no regexp prior to the "use", it was returning whatever the
376 last successful match was within the "use", because there was no current
377 regexp, so it treated it as a normal variable. It now returns undef.
379 NETaa13195: semop had one S too many.
381 Files patched: opcode.pl
382 The entry in opcode.pl had one too many S's.
384 NETaa13196: always assumes it's a Perl script if -c is used.
386 Files patched: toke.c
387 It now will assume it's a Perl script if the -c switch is used.
389 NETaa13197: changed implicit -> message to be more understandable.
391 Files patched: op.c pod/perldiag.pod
392 I changed the error message to be more understandable. It now says
394 Can't use subscript on sort...
397 NETaa13201: added OPpCONST_ENTERED flag to properly enter filehandle symbols.
398 From: E. Jay Berkenbilt
399 Also: Tom Christiansen
400 Files patched: op.c op.h toke.c
401 The grammatical reduction of a print statement didn't properly count
402 the filehandle as a symbol reference because it couldn't distinguish
403 between a symbol entered earlier in the program and a symbol entered
404 for the first time down in the lexer.
406 NETaa13203: README shouldn't mention uperl.o any more.
408 Files patched: README
410 NETaa13204: .= shouldn't warn on uninitialized target.
412 Files patched: pp_hot.c
413 No longer warns on uninitialized target of .= operator.
415 NETaa13206: handy macros in XSUB.h
417 Files patched: XSUB.h
418 Added suggested macros.
420 NETaa13228: commonality checker didn't treat lexicals as variables.
421 From: mcook@cognex.com
422 Files patched: op.c opcode.pl
423 The list assignment operator tries to avoid unnecessary copies by doing the
424 assignment directly if there are no common variables on either side of the
425 equals. Unfortunately, the code that decided that only recognized references
426 to dynamic variables, not lexical variables.
428 NETaa13229: fixed sign stuff for complement, integer coercion.
430 Files patched: perl.h pp.c sv.c
431 Fixed ~0 and integer coercions.
433 NETaa13230: no longer tries to reuse scratchpad temps if tainting in effect.
436 I haven't reproduced it, but I believe the problem is the reuse of scratchpad
437 temporaries between statements. I've made it not try to reuse them if
438 tainting is in effect.
440 NETaa13231: *foo = *bar now prevents typo warnings on "foo"
443 Aliasing of the form *foo = *bar is now protected from the typo warnings.
444 Previously only the *foo = \$bar form was.
446 NETaa13235: require BAREWORD now introduces package name immediately.
448 Files patched: toke.c
449 require BAREWORD now introduces package name immediately. This lets the
450 method intuit code work right even though the require hasn't actually run
453 NETaa13289: didn't calculate correctly using arybase.
455 Files patched: pp.c pp_hot.c
456 The runtime code didn't use curcop->cop_arybase correctly.
458 NETaa13301: store now throws exception on error
460 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
461 Changed warn to croak in ext/*DBM_File/*.xs.
463 NETaa13302: ctime now takes Time_t rather than Time_t*.
464 From: Rodger Anderson
465 Files patched: ext/POSIX/POSIX.xs
466 Now declares a Time_t and takes the address of that in CODE.
468 NETaa13302: shorter way to do this patch
469 Files patched: ext/POSIX/POSIX.xs
472 NETaa13304: could feed too large $@ back into croak, whereupon it croaked.
474 Files patched: perl.c
475 callist() could feed $@ back into croak with more than a bare %s. (croak()
476 handles long strings with a bare %s okay.)
478 NETaa13305: compiler misoptimized RHS to outside of s/a/print/e
479 From: Brian S. Cashman <bsc@umich.edu>
481 The syntax tree was being misconstructed because the compiler felt that
482 the RHS was invariant, so it did it outside the s///.
484 NETaa13314: assigning mortal to lexical leaks
487 In stealing strings, sv_setsv was checking SvPOK to see if it should free
488 the destination string. It should have been checking SvPVX.
490 NETaa13316: wait4pid now recalled when errno == EINTR
491 From: Robert J. Pankratz
492 Files patched: pp_sys.c util.c
493 system() and the close() of a piped open now recall wait4pid if it returned
494 prematurely with errno == EINTR.
496 NETaa13329: needed to localize taint magic
498 Files patched: sv.c doio.c mg.c pp_hot.c pp_sys.c scope.c taint.c
499 Taint magic is now localized better, though I had to resort to a kludge
500 to allow a value to be both tainted and untainted simultaneously during
505 when $_[0] is a reference to the variable $foo already.
507 NETaa13341: clarified interaction of AnyDBM_File::ISA and "use"
509 Files patched: pod/modpods/AnyDBMFile.pod
510 The doc was misleading.
512 NETaa13342: grep and map with block would enter block but never leave it.
515 The compiler use some sort-checking code to handle the arguments of
516 grep and map. Unfortunately, this wiped out the block exit opcode while
517 leaving the block entry opcode. This doesn't matter to sort, but did
518 matter to grep and map. It now leave the block entry intact.
520 The reason it worked without the my is because the block entry and exit
521 were optimized away to an OP_SCOPE, which it doesn't matter if it's there
524 NETaa13343: goto needed to longjmp when in a signal handler.
525 From: Robert Partington
526 Files patched: pp_ctl.c
527 goto needed to longjmp() when in a signal handler to get back into the
531 NETaa13344: strict vars shouldn't apply to globs or filehandles.
534 Filehandles and globs will be excepted from "strict vars", so that you can
535 do the standard Perl 4 trick of
544 NETaa13345: assert.pl didn't use package DB
546 Files patched: lib/assert.pl
549 NETaa13348: av_undef didn't free scalar representing $#foo.
552 av_undef didn't free scalar representing $#foo.
554 NETaa13349: sort sub accumulated save stack entries
556 Files patched: pp_ctl.c
557 COMMON only gets set if assigning to @_, which is reasonable. Most of the
558 problem was a memory leak.
560 NETaa13351: didn't treat indirect filehandles as references.
565 Can't use an undefined value as a symbol reference at ./foo line 3.
568 NETaa13352: OP_SCOPE allocated as UNOP rather than LISTOP.
572 NETaa13353: scope() didn't release filegv on OP_SCOPE optimization.
575 When scope() nulled out a NEXTSTATE, it didn't release its filegv reference.
577 NETaa13355: hv_delete now avoids useless mortalcopy
579 Files patched: hv.c op.c pp.c pp_ctl.c proto.h scope.c util.c
580 hv_delete now avoids useless mortalcopy.
583 NETaa13359: comma operator section missing its heading
585 Files patched: pod/perlop.pod
587 NETaa13359: random typo
588 Files patched: pod/perldiag.pod
590 NETaa13360: code to handle partial vec values was bogus.
591 From: Conrad Augustin
593 The code that Mark J. added a long time ago to handle values that were partially
594 off the end of the string was incorrect.
596 NETaa13361: made it not interpolate inside regexp comments
598 Files patched: toke.c
599 To avoid surprising people, it no longer interpolates inside regexp
602 NETaa13362: ${q[1]} should be interpreted like it used to
604 Files patched: toke.c
605 Now resolves ${keyword[1]} to $keyword[1] and warns if -w. Likewise for {}.
607 NETaa13363: meaning of repeated search chars undocumented in tr///
608 From: Stephen P. Potter
609 Files patched: pod/perlop.pod
610 Documented that repeated characters use the first translation given.
612 NETaa13365: if closedir fails, don't try it again.
614 Files patched: pp_sys.c
615 Now does not attempt to closedir a second time.
617 NETaa13366: can't do block scope optimization on $1 et al when tainting.
619 Files patched: toke.c
620 The tainting mechanism assumes that every statement starts out
621 untainted. Unfortunately, the scope removal optimization for very
622 short blocks removed the statementhood of statements that were
623 attempting to read $1 as an untainted value, with the effect that $1
624 appeared to be tainted anyway. The optimization is now disabled when
625 tainting and the block contains $1 (or equivalent).
627 NETaa13366: fixed this a better way in toke.c.
631 NETaa13366: need to disable scope optimization when tainting.
635 NETaa13367: Did a SvCUR_set without nulling out final char.
636 From: "Rob Henderson" <robh@cs.indiana.edu>
637 Files patched: doop.c pp.c pp_sys.c
638 When do_vop set the length on its result string it neglected to null-terminate
641 NETaa13368: bigrat::norm sometimes chucked sign
643 Files patched: lib/bigrat.pl
644 The normalization routine was assuming that the gcd of two numbers was
645 never negative, and based on that assumption managed to move the sign
646 to the denominator, where it was deleted on the assumption that the
647 denominator is always positive.
649 NETaa13368: botched previous patch
650 Files patched: lib/bigrat.pl
653 NETaa13369: # is now a comment character, and \# should be left for regcomp.
655 Files patched: toke.c
656 It was not skipping the comment when it skipped the white space, and constructed
657 an opcode that tried to match a null string. Unfortunately, the previous
658 star tried to use the first character of the null string to optimize where
659 to recurse, so it never matched.
661 NETaa13369: comment after regexp quantifier induced non-match.
662 Files patched: regcomp.c
665 NETaa13370: some code assumed SvCUR was of type int.
666 From: Spider Boardman
667 Files patched: pp_sys.c
668 Did something similar to the proposed patch. I also fixed the problem that
669 it assumed the type of SvCUR was int. And fixed get{peer,sock}name the
672 NETaa13375: sometimes dontbother wasn't added back into strend.
674 Files patched: regexec.c
675 When the /g modifier was used, the regular expression code would calculate
676 the end of $' too short by the minimum number of characters the pattern could
679 NETaa13375: sv_setpvn now disallows negative length.
683 NETaa13376: suspected indirect objecthood prevented recognition of lexical.
684 From: Gisle.Aas@nr.no
685 Files patched: toke.c
686 When $data[0] is used in a spot that might be an indirect object, the lexer
687 was getting confused over the rule that says the $data in $$data[0] isn't
688 an array element. (The lexer uses XREF state for both indirect objects
689 and for variables used as names.)
691 NETaa13377: -I processesing ate remainder of #! line.
692 From: Darrell Schiebel
693 Files patched: perl.c
694 I made the -I processing in moreswitches look for the end of the string,
695 delimited by whitespace.
697 NETaa13379: ${foo} now treated the same outside quotes as inside
699 Files patched: toke.c
700 ${bareword} is now treated the same outside quotes as inside.
702 NETaa13379: previous fix for this bug was botched
703 Files patched: toke.c
706 NETaa13381: TEST should check for perl link
708 Files patched: t/TEST
709 die "You need to run \"make test\" first to set things up.\n" unless -e 'perl';
712 NETaa13384: fixed version 0.000 botch.
714 Files patched: installperl
716 NETaa13385: return 0 from required file loses message
717 From: Malcolm Beattie
718 Files patched: pp_ctl.c
721 NETaa13387: added pod2latex
723 Files patched: MANIFEST pod/pod2latex
724 Added most recent copy to pod directory.
726 NETaa13388: constant folding now prefers integer results over double
727 From: Ilya Zakharevich
729 Constant folding now prefers integer results over double.
731 NETaa13389: now treats . and exec as shell metathingies
733 Files patched: doio.c
734 Now treats . and exec as shell metathingies.
736 NETaa13395: eval didn't check taintedness.
738 Files patched: pp_ctl.c
740 NETaa13396: $^ coredumps at end of string
742 Files patched: toke.c
743 The scan_ident() didn't check for a null following $^.
745 NETaa13397: improved error messages when operator expected
747 Files patched: toke.c
748 Added message (Do you need to predeclare BAR?). Also fixed the missing
751 NETaa13399: cleanup by Andy
753 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
755 NETaa13399: cleanup from Andy
756 Files patched: MANIFEST
758 NETaa13399: configuration cleanup
759 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
761 NETaa13399: new files from Andy
762 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
764 NETaa13399: patch0l from Andy
765 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
767 NETaa13399: stuff from Andy
768 Files patched: Configure MANIFEST Makefile.SH configpm hints/dec_osf.sh hints/linux.sh hints/machten.sh lib/ExtUtils/MakeMaker.pm util.c
770 NETaa13399: Patch 0k from Andy
771 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
773 NETaa13399: Patch 0m from Andy
774 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
776 NETaa13400: pod2html update from Bill Middleton
778 Files patched: pod/pod2html
780 NETaa13401: Boyer-Moore code attempts to compile string longer than 255.
781 From: Kyriakos Georgiou
782 Files patched: util.c
783 The Boyer-Moore table uses unsigned char offsets, but the BM compiler wasn't
784 rejecting strings longer than 255 chars, and was miscompiling them.
786 NETaa13403: missing a $ on variable name
788 Files patched: installperl
791 NETaa13406: didn't wipe out dead match when proceeding to next BRANCH
792 From: Michael P. Clemens
793 Files patched: regexec.c
794 The code to check alternatives didn't invalidate backreferences matched by the
797 NETaa13407: overload upgrade
798 From: owner-perl5-porters@nicoh.com
799 Also: Ilya Zakharevich
800 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
801 Applied supplied patch, and fixed bug induced by use of sv_setsv to do
802 a deep copy, since sv_setsv no longer copies objecthood.
804 NETaa13409: sv_gets tries to grow string at EOF
805 From: Harold O Morris
807 Applied suggested patch, only two statements earlier, since the end code
810 NETaa13410: delaymagic did =~ instead of &= ~
812 Files patched: pp_hot.c
813 Applied supplied patch.
815 NETaa13411: POSIX didn't compile under -DLEAKTEST
816 From: Frederic Chauveau
817 Files patched: ext/POSIX/POSIX.xs
818 Used NEWSV instead of newSV.
820 NETaa13412: new version from Tony Sanders
822 Files patched: lib/Term/Cap.pm
823 Installed as Term::Cap.pm
825 NETaa13413: regmust extractor needed to restart loop on BRANCH for (?:) to work
827 Files patched: regcomp.c
828 The BRANCH skipper should have restarted the loop from the top.
830 NETaa13414: the check for accidental list context was done after pm_short check
831 From: Michael H. Coen
832 Files patched: pp_hot.c
833 Moved check for accidental list context to before the pm_short optimization.
835 NETaa13418: perlre.pod babbled nonsense about | in character classes
837 Files patched: pod/perlre.pod
838 Removed bogus brackets. Now reads:
839 Note however that "|" is interpreted as a literal with square brackets,
840 so if you write C<[fee|fie|foe]> you're really only matching C<[feio|]>.
842 NETaa13419: need to document introduction of lexical variables
843 From: "Heading, Anthony"
844 Files patched: pod/perlfunc.pod
845 Now mentions that lexicals aren't introduced till after the current statement.
847 NETaa13420: formats that overflowed a page caused endless top of forms
848 From: Hildo@CONSUL.NL
849 Files patched: pp_sys.c
850 If a record is too large to fit on a page, it now prints whatever will
851 fit and then calls top of form again on the remainder.
853 NETaa13423: the code to do negative list subscript in scalar context was missing
854 From: Steve McDougall
856 The negative subscript code worked right in list context but not in scalar
857 context. In fact, there wasn't code to do it in the scalar context.
859 NETaa13424: existing but undefined CV blocked inheritance
860 From: Spider Boardman
862 Applied supplied patch.
864 NETaa13425: removed extra argument to croak
866 Files patched: regcomp.c
867 Removed extra argument.
869 NETaa13427: added return types
871 Files patched: x2p/a2py.c
872 Applied suggested patch.
874 NETaa13427: added static declarations
875 Files patched: x2p/walk.c
878 NETaa13428: split was assuming that all backreferences were defined
879 From: Dave Schweisguth
881 split was assuming that all backreferences were defined.
883 NETaa13430: hoistmust wasn't hoisting anchored shortcircuit's length
884 From: Tom Christiansen
886 Files patched: toke.c
888 NETaa13432: couldn't call code ref under debugger
890 Files patched: op.c pp_hot.c sv.h
891 The debugging code assumed it could remember a name to represent a subroutine,
892 but anonymous subroutines don't have a name. It now remembers a CV reference
895 NETaa13435: 1' dumped core
897 Files patched: toke.c
898 Didn't check a pointer for nullness.
900 NETaa13436: print foo(123) didn't treat foo as subroutine
901 From: mcook@cognex.com
902 Files patched: toke.c
903 Now treats it as a subroutine rather than a filehandle.
905 NETaa13437: &$::foo didn't think $::foo was a variable name
906 From: mcook@cognex.com
907 Files patched: toke.c
908 Now treats $::foo as a global variable.
910 NETaa13439: referred to old package name
911 From: Tom Christiansen
912 Files patched: lib/Sys/Syslog.pm
913 Wasn't a strict refs problem after all. It was simply referring to package
914 syslog, which had been renamed to Sys::Syslog.
916 NETaa13440: stat operations didn't know what to do with glob or ref to glob
917 From: mcook@cognex.com
918 Files patched: doio.c pp_sys.c
919 Now knows about the kinds of filehandles returned by FileHandle constructors
922 NETaa13442: couldn't find name of copy of deleted symbol table entry
923 From: Spider Boardman
924 Files patched: gv.c gv.h
925 I did a much simpler fix. When gp_free notices that it's freeing the
926 master GV, it nulls out gp_egv. The GvENAME and GvESTASH macros know
927 to revert to gv if egv is null.
929 This has the advantage of not creating a reference loop.
931 NETaa13443: couldn't override an XSUB
934 When the newSUB and newXS routines checked for whether the old sub was
935 defined, they only looked at CvROOT(cv), not CvXSUB(cv).
937 NETaa13443: needed to do same thing in newXS
941 NETaa13444: -foo now doesn't warn unless sub foo is defined
943 Files patched: toke.c
944 Made it not warn on -foo, unless there is a sub foo defined.
946 NETaa13451: in scalar context, pp_entersub now guarantees one item from XSUB
947 From: Nick Gianniotis
948 Files patched: pp_hot.c
949 The pp_entersub routine now guarantees that an XSUB in scalar context
950 returns one and only one value. If there are fewer, it pushes undef,
951 and if there are more, it returns the last one.
953 NETaa13457: now explicitly disallows printf format with 'n' or '*'.
954 From: lees@cps.msu.edu
955 Files patched: doop.c
958 Use of n in printf format not supported at ./foo line 3.
961 NETaa13458: needed to call SvPOK_only() in pp_substr
964 Needed to call SvPOK_only() in pp_substr.
966 NETaa13459: umask and chmod now warn about missing initial 0 even with paren
968 Files patched: toke.c
969 Now skips parens as well as whitespace looking for argument.
971 NETaa13460: backtracking didn't work on .*? because reginput got clobbered
973 Files patched: regexec.c
974 When .*? did a probe of the rest of the string, it clobbered reginput,
975 so the next call to match a . tried to match the newline and failed.
977 NETaa13475: \(@ary) now treats array as list of scalars
980 The mod() routine now refrains from marking @ary as an lvalue if it's in parens
981 and is the subject of an OP_REFGEN.
983 NETaa13481: accept buffer wasn't aligned good enough
984 From: Holger Bechtold
985 Also: Christian Murphy
986 Files patched: pp_sys.c
987 Applied suggested patch.
989 NETaa13486: while (<>) now means while (defined($_ = <>))
991 Files patched: op.c pod/perlop.pod
992 while (<HANDLE>) now means while (defined($_ = <HANDLE>)).
994 NETaa13500: needed DESTROY in FileHandle
996 Files patched: ext/POSIX/POSIX.pm
997 Added DESTROY method. Also fixed ungensym to use POSIX:: instead of _POSIX.
998 Removed ungensym from close method, since DESTROY should do that now.
1000 NETaa13502: now complains if you use local on a lexical variable
1003 Now says something like
1005 Can't localize lexical variable $var at ./try line 6.
1007 NETaa13512: added $SIG{__WARN__} and $SIG{__DIE__} hooks
1009 Files patched: embed.h gv.c interp.sym mg.c perl.h pod/perlvar.pod pp_ctl.c util.c Todo pod/perldiag.pod
1011 NETaa13514: statements before intro of lex var could see lex var
1012 From: William Setzer
1014 When a lexical variable is declared, introduction is delayed until
1015 the start of the next statement, so that any initialization code runs
1016 outside the scope of the new variable. Thus,
1022 should print 3. Unfortunately, the declaration was marked with the
1023 beginning location at the time that "my $y" was processed instead of
1024 when the variable was introduced, so any embedded statements within
1025 an anonymous subroutine picked up the wrong "my". The declaration
1026 is now labelled correctly when the variable is actually introduced.
1028 NETaa13520: added closures
1030 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
1032 NETaa13520: test to see if lexical works in a format now
1033 Files patched: t/op/write.t
1035 NETaa13522: substitution couldn't be used on a substr()
1037 Files patched: pp_ctl.c pp_hot.c
1038 Changed pp_subst not to use sv_replace() anymore, which didn't handle lvalues
1039 and was overkill anyway. Should be slightly faster this way too.
1041 NETaa13525: G_EVAL mode in perl_call_sv didn't return values right.
1042 Files patched: perl.c
1044 NETaa13525: consolidated error message
1046 Files patched: perl.h toke.c
1048 NETaa13525: derived it
1049 Files patched: perly.h
1051 NETaa13525: missing some values from embed.h
1052 Files patched: embed.h
1054 NETaa13525: random cleanup
1055 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
1057 NETaa13525: random cleanup
1058 Files patched: pp_ctl.c util.c
1060 NETaa13527: File::Find needed to export $name and $dir
1062 Files patched: lib/File/Find.pm
1063 They are now exported.
1065 NETaa13528: cv_undef left unaccounted-for GV pointer in CV
1067 Also: Spider Boardman
1070 NETaa13530: scalar keys now resets hash iterator
1072 Files patched: doop.c
1073 scalar keys() now resets the hash iterator.
1075 NETaa13531: h2ph doesn't check defined right
1076 From: Casper H.S. Dik
1077 Files patched: h2ph.SH
1079 NETaa13540: VMS update
1081 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
1083 NETaa13540: got some duplicate code
1084 Files patched: lib/File/Path.pm
1086 NETaa13540: stuff from Charles
1087 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
1089 NETaa13540: tweak from Charles
1090 Files patched: lib/File/Path.pm
1092 NETaa13552: scalar unpack("P4",...) ignored the 4
1095 The optimization that tried to do only one item in a scalar context didn't
1096 realize that the argument to P was not a repeat count.
1098 NETaa13553: now warns about 8 or 9 in octal escapes
1100 Files patched: util.c
1101 Now warns if it finds 8 or 9 before the end of the octal escape sequence.
1102 So \039 produces a warning, but \0339 does not.
1104 NETaa13554: now allows foreach ${"name"}
1107 Instead of trying to remove OP_RV2SV, the compiler now just transmutes it into an
1108 OP_RV2GV, which is a no-op for ordinary variables and does the right
1109 thing for ${"name"}.
1111 NETaa13559: substitution now always checks for readonly
1112 From: Rodger Anderson
1113 Files patched: pp_hot.c
1114 Substitution now always checks for readonly.
1116 NETaa13561: added explanations of closures and curly-quotes
1118 Files patched: pod/perlref.pod
1120 NETaa13562: null components in path cause indigestion
1121 From: Ambrose Kofi Laing
1122 Files patched: lib/Cwd.pm lib/pwd.pl
1124 NETaa13575: documented semantics of negative substr length
1126 Files patched: pod/perlfunc.pod
1127 Documented the fact that negative length now leaves characters off the end,
1128 and while I was at it, made it work right even if offset wasn't 0.
1130 NETaa13575: negative length to substr didn't work when offset non-zero
1134 NETaa13575: random cleanup
1135 Files patched: pod/perlfunc.pod
1138 NETaa13580: couldn't localize $ACCUMULATOR
1140 Files patched: gv.c lib/English.pm mg.c perl.c sv.c
1141 Needed to make $^A a real magical variable. Also lib/English.pm wasn't
1144 NETaa13583: doc mods from Tom
1146 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
1148 NETaa13589: return was enforcing list context on its arguments
1150 Files patched: opcode.pl
1151 A return was being treated like a normal list operator, in that it was
1152 setting list context on its arguments. This was bogus.
1154 NETaa13591: POSIX::creat used wrong argument
1156 Files patched: ext/POSIX/POSIX.pm
1157 Applied suggested patch.
1159 NETaa13605: use strict refs error message now displays bad ref
1161 Files patched: perl.h pod/perldiag.pod pp.c pp_hot.c
1164 Can't use string ("2") as a HASH ref while "strict refs" in use at ./foo line 12.
1166 NETaa13630: eof docs were unclear
1167 From: Hallvard B Furuseth
1168 Files patched: pod/perlfunc.pod
1169 Applied suggested patch.
1171 NETaa13636: $< and $> weren't refetched on undump restart
1172 From: Steve Pearlmutter
1173 Files patched: perl.c
1174 The code in main() bypassed perl_construct on an undump restart, which bypassed
1175 the code that set $< and $>.
1177 NETaa13641: added Tim's fancy new import whizbangers
1179 Files patched: lib/Exporter.pm
1180 Applied suggested patch.
1182 NETaa13649: couldn't AUTOLOAD a symbol reference
1184 Files patched: pp_hot.c
1185 pp_entersub needed to guarantee a CV so it would get to the AUTOLOAD code.
1187 NETaa13651: renamed file had wrong package name
1188 From: Andreas Koenig
1189 Files patched: lib/File/Path.pm
1190 Applied suggested patch.
1192 NETaa13660: now that we're testing distribution we can diagnose RANDBITS errors
1193 From: Karl Glazebrook
1194 Files patched: t/op/rand.t
1195 Changed to suggested algorithm. Also duplicated it to test rand(100) too.
1197 NETaa13660: rand.t didn't test for proper distribution within range
1198 Files patched: t/op/rand.t
1201 NETaa13671: array slice misbehaved in a scalar context
1204 A spurious else prevented the scalar-context-handling code from running.
1206 NETaa13672: filehandle constructors in POSIX don't return failure successfully
1208 Files patched: ext/POSIX/POSIX.pm
1209 Applied suggested patch.
1212 NETaa13678: forced $1 to always be untainted
1215 I believe the bug that triggered this was fixed elsewhere, but just in case,
1216 I put in explicit code to force $1 et al not to be tainted regardless.
1218 NETaa13682: formline doc need to discuss ~ and ~~ policy
1220 Files patched: pod/perlfunc.pod
1222 NETaa13686: POSIX::open and POSIX::mkfifo didn't check tainting
1224 Files patched: ext/POSIX/POSIX.xs
1225 open() and mkfifo() now check tainting.
1227 NETaa13687: new Exporter.pm
1229 Files patched: lib/Exporter.pm
1230 Added suggested changes, except for @EXPORTABLE, because it looks too much
1231 like @EXPORTTABLE. Decided to stick with @EXPORT_OK because it looks more
1232 like an adjunct. Also added an export_tags routine. The keys in the
1233 %EXPORT_TAGS hash no longer use colons, to make the initializers prettier.
1235 NETaa13687: new Exporter.pm
1236 Files patched: ext/POSIX/POSIX.pm
1239 NETaa13694: add sockaddr_in to Socket.pm
1241 Files patched: ext/Socket/Socket.pm
1242 Applied suggested patch.
1244 NETaa13695: library routines should use qw() as good example
1246 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
1247 Applied suggested patch.
1249 NETaa13696: myconfig should be a routine in Config.pm
1250 From: Kenneth Albanowski
1251 Files patched: configpm
1252 Applied suggested patch.
1254 NETaa13704: fdopen closed fd on failure
1255 From: Hallvard B Furuseth
1256 Files patched: doio.c
1257 Applied suggested patch.
1259 NETaa13706: Term::Cap doesn't work
1261 Files patched: lib/Term/Cap.pm
1262 Applied suggested patch.
1264 NETaa13710: cryptswitch needed to be more "useable"
1266 Files patched: embed.h global.sym perl.h toke.c
1267 The cryptswitch_fp function now can operate in two modes. It can
1268 modify the global rsfp to redirect input as before, or it can modify
1269 linestr and return true, indicating that it is not necessary for yylex
1270 to read another line since cryptswitch_fp has just done it.
1272 NETaa13712: new_tmpfile() can't be called as constructor
1274 Files patched: ext/POSIX/POSIX.xs
1275 Now allows new_tmpfile() to be called as a constructor.
1277 NETaa13714: variable method call not documented
1278 From: "Randal L. Schwartz"
1279 Files patched: pod/perlobj.pod
1280 Now indicates that OBJECT->$method() works.
1282 NETaa13715: PACK->$method produces spurious warning
1284 Files patched: toke.c
1285 The -> operator was telling the lexer to expect an operator when the
1286 next thing was a variable.
1288 NETaa13716: Carp now allows multiple packages to be skipped out of
1290 Files patched: lib/Carp.pm
1291 The subroutine redefinition warnings now warn on import collisions.
1293 NETaa13716: Exporter catches warnings and gives a better line number
1294 Files patched: lib/Exporter.pm
1297 NETaa13716: now counts imported routines as "defined" for redef warnings
1298 Files patched: op.c sv.c