Commit | Line | Data |
748a9306 |
1 | ------------- |
4633a7c4 |
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 | ------------- |
748a9306 |
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 | |
93a17b20 |
2333 | New things |
2334 | ---------- |
2335 | The -w switch is much more informative. |
2336 | |
463ee0b2 |
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. |
93a17b20 |
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 | |
3edbfbe5 |
2350 | More embeddible. See main.c and embed_h.sh. Multiple interpreters |
463ee0b2 |
2351 | in the same process are supported (though not with interleaved |
2352 | execution yet). |
93a17b20 |
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 |
85e6fe83 |
2363 | a do {} block. |
93a17b20 |
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 | |
463ee0b2 |
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 | |
a0d0e21e |
2391 | New functions include: abs(), chr(), uc(), ucfirst(), lc(), lcfirst(), |
2392 | chomp(), glob() |
8990e307 |
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 | |
a0d0e21e |
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. |
85e6fe83 |
2455 | |
463ee0b2 |
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 | |
a0d0e21e |
2461 | Ordinary variables starting with underscore are no longer forced into |
2462 | package main. |
2463 | |
463ee0b2 |
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 |
a0d0e21e |
2480 | of a variable, or as a delimiter for any kind of quote construct. |
463ee0b2 |
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 | |
ed6116ce |
2495 | Symbols starting with _ are no longer forced into package main, except |
2496 | for $_ itself (and @_, etc.). |
2497 | |
8990e307 |
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. |
a0d0e21e |
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. |