Commit | Line | Data |
---|---|---|
59c9ff65 | 1 | ------------- |
2 | Version 5.001 | |
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 | There were a few that can be construed as enhancements: | |
10 | NETaa13059: now warns of use of \1 where $1 is necessary. | |
11 | NETaa13512: added $SIG{__WARN__} and $SIG{__DIE__} hooks | |
12 | NETaa13520: added closures | |
13 | NETaa13530: scalar keys now resets hash iterator | |
14 | NETaa13641: added Tim's fancy new import whizbangers | |
15 | NETaa13710: cryptswitch needed to be more "useable" | |
16 | NETaa13716: Carp now allows multiple packages to be skipped out of | |
17 | NETaa13716: now counts imported routines as "defined" for redef warnings | |
18 | (and, of course, much of the stuff from the perl5-porters) | |
19 | ||
20 | NETaa12974: README incorrectly said it was a pre-release. | |
21 | Files patched: README | |
22 | ||
23 | NETaa13033: goto pushed a bogus scope on the context stack. | |
24 | From: Steve Vinoski | |
25 | Files patched: pp_ctl.c | |
f58c54f0 | 26 | The goto operator pushed an extra bogus scope onto the context stack. (This |
59c9ff65 | 27 | often didn't matter, since many things pop extra unrecognized scopes off.) |
28 | ||
29 | NETaa13034: tried to get valid pointer from undef. | |
30 | From: Castor Fu | |
31 | Also: Achille Hui, the Day Dreamer | |
32 | Also: Eric Arnold | |
33 | Files patched: pp_sys.c | |
34 | Now treats undef specially, and calls SvPV_force on any non-numeric scalar | |
35 | value to get a real pointer to somewhere. | |
36 | ||
37 | NETaa13035: included package info with filehandles. | |
38 | From: Jack Shirazi - BIU | |
39 | Files patched: pp_hot.c pp_sys.c | |
40 | Now passes a glob to filehandle methods to keep the package info intact. | |
41 | ||
42 | NETaa13048: didn't give strict vars message on every occurrence. | |
43 | From: Doug Campbell | |
44 | Files patched: gv.c | |
45 | It now complains about every occurrence. (The bug resulted from an | |
46 | ill-conceived attempt to suppress a duplicate error message in a | |
47 | suboptimal fashion.) | |
48 | ||
49 | NETaa13052: test for numeric sort sub return value fooled by taint magic. | |
50 | From: Peter Jaspers-Fayer | |
51 | Files patched: pp_ctl.c sv.h | |
52 | The test to see if the sort sub return value was numeric looked at the | |
53 | public flags rather than the private flags of the SV, so taint magic | |
54 | hid that info from the sort. | |
55 | ||
56 | NETaa13053: forced a2p to use byacc | |
57 | From: Andy Dougherty | |
58 | Files patched: MANIFEST x2p/Makefile.SH x2p/a2p.c | |
59 | a2p.c is now pre-byacced and shipped with the kit. | |
60 | ||
61 | NETaa13055: misnamed constant in previous patch. | |
62 | From: Conrad Augustin | |
63 | Files patched: op.c op.h toke.c | |
64 | The tokener translates $[ to a constant, but with a special marking in case | |
65 | the constant gets assigned to or localized. Unfortunately, the marking | |
66 | was done with a combination of OPf_SPECIAL and OPf_MOD that was easily | |
67 | spoofed. There is now a private OPpCONST_ARYLEN flag for this purpose. | |
68 | ||
69 | NETaa13055: use of OPf_SPECIAL for $[ lvaluehood was too fragile. | |
70 | Files patched: op.c op.h toke.c | |
71 | (same) | |
72 | ||
73 | NETaa13056: convert needs to throw away any number info on its list. | |
74 | From: Jack Shirazi - BIU | |
75 | Files patched: op.c | |
76 | The listiness of the argument list leaked out to the subroutine call because | |
77 | of how prepend_elem and append_elem reuse an existing list. The convert() | |
78 | routine just needs to discard any listiness it finds on its argument. | |
79 | ||
80 | NETaa13058: AUTOLOAD shouldn't assume size of @_ is meaningful. | |
81 | From: Florent Guillaume | |
82 | Files patched: ext/DB_File/DB_File.pm ext/Fcntl/Fcntl.pm ext/GDBM_File/GDBM_File.pm ext/Socket/Socket.pm h2xs.SH | |
83 | I just deleted the optimization, which is silly anyway since the eventual | |
84 | subroutine definition is cached. | |
85 | ||
86 | NETaa13059: now warns of use of \1 where $1 is necessary. | |
87 | From: Gustaf Neumann | |
88 | Files patched: toke.c | |
89 | Now says | |
90 | ||
91 | Can't use \1 to mean $1 in expression at foo line 2 | |
92 | ||
93 | along with an explanation in perldiag. | |
94 | ||
95 | NETaa13060: no longer warns on attempt to read <> operator's transition state. | |
96 | From: Chaim Frenkel | |
97 | Files patched: pp_hot.c | |
98 | No longer warns on <> operator's transitional state. | |
99 | ||
100 | NETaa13140: warning said $ when @ would be more appropriate. | |
101 | From: David J. MacKenzie | |
102 | Files patched: op.c pod/perldiag.pod | |
103 | Now says | |
104 | ||
105 | (Did you mean $ or @ instead of %?) | |
106 | ||
107 | and added more explanation to perldiag. | |
108 | ||
109 | NETaa13149: was reading freed memory to make incorrect error message. | |
110 | Files patched: pp_ctl.c | |
111 | It was reading freed memory to make an error message that would be | |
112 | incorrect in any event because it had the inner filename rather than | |
113 | the outer. | |
114 | ||
115 | NETaa13149: confess was sometimes less informative than croak | |
116 | From: Jack Shirazi | |
117 | Files patched: lib/Carp.pm | |
118 | (same) | |
119 | ||
120 | NETaa13150: stderr needs to be STDERR in package | |
121 | From: Jack Shirazi | |
122 | Files patched: lib/File/CheckTree.pm | |
123 | Also fixed pl2pm to translate the filehandles to uppercase. | |
124 | ||
125 | NETaa13150: uppercases stdin, stdout and stderr | |
126 | Files patched: pl2pm | |
127 | (same) | |
128 | ||
129 | NETaa13154: array assignment didn't notice package magic. | |
130 | From: Brian Reichert | |
131 | Files patched: pp_hot.c | |
132 | The list assignment operator looked for only set magic, but set magic is | |
133 | only on the elements of a magical hash, not on the hash as a whole. I made | |
134 | the operator look for any magic at all on the target array or hash. | |
135 | ||
136 | NETaa13155: &DB::DB left trash on the stack. | |
137 | From: Thomas Koenig | |
138 | Files patched: lib/perl5db.pl pp_ctl.c | |
139 | The call by pp_dbstate() to &DB::DB left trash on the stack. It now | |
140 | calls DB in list context, and DB returns (). | |
141 | ||
142 | NETaa13156: lexical variables didn't show up in debugger evals. | |
143 | From: Joergen Haegg | |
144 | Files patched: op.c | |
145 | The code that searched back up the context stack for the lexical scope | |
146 | outside the eval only partially took into consideration that there | |
147 | might be extra debugger subroutine frames that shouldn't be used, and | |
148 | ended up comparing the wrong statement sequence number to the range of | |
f58c54f0 | 149 | valid sequence numbers for the scope of the lexical variable. (There |
59c9ff65 | 150 | was also a bug fixed in passing that caused the scope of lexical to go |
151 | clear to the end of the subroutine even if it was within an inner block.) | |
152 | ||
153 | NETaa13157: any request for autoloaded DESTROY should create a null one. | |
154 | From: Tom Christiansen | |
155 | Files patched: lib/AutoLoader.pm | |
156 | If DESTROY.al is not located, it now creates sub DESTROY {} automatically. | |
157 | ||
158 | NETaa13158: now preserves $@ around destructors while leaving eval. | |
159 | From: Tim Bunce | |
160 | Files patched: pp_ctl.c | |
161 | Applied supplied patch, except the whole second hunk can be replaced with | |
162 | ||
163 | sv_insert(errsv, 0, 0, message, strlen(message)); | |
164 | ||
165 | NETaa13160: clarified behavior of split without arguments | |
166 | From: Harry Edmon | |
167 | Files patched: pod/perlfunc.pod | |
168 | Clarified the behavior of split without arguments. | |
169 | ||
170 | NETaa13162: eval {} lost list/scalar context | |
171 | From: Dov Grobgeld | |
172 | Files patched: op.c | |
173 | LEAVETRY didn't propagate number to ENTERTRY. | |
174 | ||
175 | NETaa13163: clarified documentation of foreach using my variable | |
176 | From: Tom Christiansen | |
177 | Files patched: pod/perlsyn.pod | |
178 | Explained that foreach using a lexical is still localized. | |
179 | ||
180 | NETaa13164: the dot detector for the end of formats was over-rambunctious. | |
181 | From: John Stoffel | |
182 | Files patched: toke.c | |
f58c54f0 | 183 | The dot detector for the end of formats was over-rambunctious. It would |
59c9ff65 | 184 | pick up any dot that didn't have a space in front of it. |
185 | ||
186 | NETaa13165: do {} while 1 never linked outer block into next chain. | |
187 | From: Gisle Aas | |
188 | Files patched: op.c | |
189 | When the conditional of do {} while 1; was optimized away, it confused the | |
190 | postfix order construction so that the block that ordinarily sits around the | |
f58c54f0 | 191 | whole loop was never executed. So when the loop tried to unstack between |
59c9ff65 | 192 | iterations, it got the wrong context, and blew away the lexical variables |
193 | of the outer scope. Fixed it by introducing a NULL opcode that will be | |
194 | optimized away later. | |
195 | ||
196 | NETaa13167: coercion was looking at public bits rather than private bits. | |
197 | From: Randal L. Schwartz | |
198 | Also: Thomas Riechmann | |
199 | Also: Shane Castle | |
200 | Files patched: sv.c | |
201 | There were some bad ifdefs around the various varieties of set*id(). In | |
202 | addition, tainting was interacting badly with assignment to $> because | |
203 | sv_2iv() was examining SvPOK rather than SvPOKp, and so couldn't coerce | |
204 | a string uid to an integer one. | |
205 | ||
206 | NETaa13167: had some ifdefs wrong on set*id. | |
207 | Files patched: mg.c pp_hot.c | |
208 | (same) | |
209 | ||
210 | NETaa13168: relaxed test for comparison of new and old fds | |
211 | From: Casper H.S. Dik | |
212 | Files patched: t/lib/posix.t | |
213 | I relaxed the comparison to just check that the new fd is greater. | |
214 | ||
215 | NETaa13169: autoincrement can corrupt scalar value state. | |
216 | From: Gisle Aas | |
217 | Also: Tom Christiansen | |
218 | Files patched: sv.c | |
219 | It assumed a PV didn't need to be upgraded to become an NV. | |
220 | ||
221 | NETaa13169: previous patch could leak a string pointer. | |
222 | Files patched: sv.c | |
223 | (same) | |
224 | ||
225 | NETaa13170: symbols missing from global.sym | |
226 | From: Tim Bunce | |
227 | Files patched: global.sym | |
228 | Applied suggested patch. | |
229 | ||
230 | NETaa13171: \\ in <<'END' shouldn't reduce to \. | |
231 | From: Randal L. Schwartz | |
232 | Files patched: toke.c | |
233 | <<'END' needed to bypass ordinary single-quote processing. | |
234 | ||
235 | NETaa13172: 'use integer' turned off magical autoincrement. | |
236 | From: Erich Rickheit KSC | |
237 | Files patched: pp.c pp_hot.c | |
238 | The integer versions of the increment and decrement operators were trying too | |
239 | hard to be efficient. | |
240 | ||
241 | NETaa13172: deleted duplicate increment and decrement code | |
242 | Files patched: opcode.h opcode.pl pp.c | |
243 | (same) | |
244 | ||
245 | NETaa13173: install should make shared libraries executable. | |
246 | From: Brian Grossman | |
247 | Also: Dave Nadler | |
248 | Also: Eero Pajarre | |
249 | Files patched: installperl | |
250 | Now gives permission 555 to any file ending with extension specified by $dlext. | |
251 | ||
252 | NETaa13176: ck_rvconst didn't free the const it used up. | |
253 | From: Nick Duffek | |
254 | Files patched: op.c | |
255 | I checked in many random memory leaks under this bug number, since it | |
256 | was an eval that brought many of them out. | |
257 | ||
258 | NETaa13176: didn't delete XRV for temp ref of destructor. | |
259 | Files patched: sv.c | |
260 | (same) | |
261 | ||
262 | NETaa13176: didn't delete op_pmshort in matching operators. | |
263 | Files patched: op.c | |
264 | (same) | |
265 | ||
266 | NETaa13176: eval leaked the name of the eval. | |
267 | Files patched: scope.c | |
268 | (same) | |
269 | ||
270 | NETaa13176: gp_free didn't free the format. | |
271 | Files patched: gv.c | |
272 | (same) | |
273 | ||
274 | NETaa13176: minor leaks in loop exits and constant subscript optimization. | |
275 | Files patched: op.c | |
276 | (same) | |
277 | ||
278 | NETaa13176: plugged some duplicate struct allocation memory leaks. | |
279 | Files patched: perl.c | |
280 | (same) | |
281 | ||
282 | NETaa13176: sv_clear of an FM didn't clear anything. | |
283 | Files patched: sv.c | |
284 | (same) | |
285 | ||
286 | NETaa13176: tr/// didn't mortalize its return value. | |
287 | Files patched: pp.c | |
288 | (same) | |
289 | ||
290 | NETaa13177: SCOPE optimization hid line number info | |
291 | From: David J. MacKenzie | |
292 | Also: Hallvard B Furuseth | |
293 | Files patched: op.c | |
294 | Every pass on the syntax tree has to keep track of the current statement. | |
295 | Unfortunately, the single-statement block was optimized into a single | |
296 | statement between the time the variable was parsed and the time the | |
297 | void code scan was done, so that pass didn't see the OP_NEXTSTATE | |
298 | operator, because it has been optimized to an OP_NULL. | |
299 | ||
300 | Fortunately, null operands remember what they were, so it was pretty easy | |
301 | to make it set the correct line number anyway. | |
302 | ||
303 | NETaa13178: some linux doesn't handle nm well | |
304 | From: Alan Modra | |
305 | Files patched: hints/linux.sh | |
306 | Applied supplied patch. | |
307 | ||
308 | NETaa13180: localized slice now pre-extends array | |
309 | From: Larry Schuler | |
310 | Files patched: pp.c | |
311 | A localized slice now pre-extends its array to avoid reallocation during | |
312 | the scope of the local. | |
313 | ||
314 | NETaa13181: m//g didn't keep track of whether previous match matched null. | |
315 | From: "philippe.verdret" | |
316 | Files patched: mg.h pp_hot.c | |
317 | A pattern isn't allowed to match a null string in the same place twice in | |
f58c54f0 | 318 | a row. m//g wasn't keeping track of whether the previous match matched |
59c9ff65 | 319 | the null string. |
320 | ||
321 | NETaa13182: now includes whitespace as a regexp metacharacter. | |
322 | From: Larry Wall | |
323 | Files patched: toke.c | |
324 | scan_const() now counts " \t\n\r\f\v" as metacharacters when scanning a pattern. | |
325 | ||
326 | NETaa13183: sv_setsv shouldn't try to clone an object. | |
327 | From: Peter Gordon | |
328 | Files patched: sv.c | |
329 | The sv_mortalcopy() done by the return in STORE called sv_setsv(), | |
330 | which cloned the object. sv_setsv() shouldn't be in the business of | |
331 | cloning objects. | |
332 | ||
333 | NETaa13184: bogus warning on quoted signal handler name removed. | |
334 | From: Dan Carson | |
335 | Files patched: toke.c | |
336 | Now doesn't complain unless the first non-whitespace character after the = | |
337 | is an alphabetic character. | |
338 | ||
339 | NETaa13186: now croaks on chop($') | |
340 | From: Casper H.S. Dik | |
341 | Files patched: doop.c | |
342 | Now croaks on chop($') and such. | |
343 | ||
344 | NETaa13187: "${foo::bar}" now counts as mere delimitation, not as a bareword. | |
345 | From: Jay Rogers | |
346 | Files patched: toke.c | |
347 | "${foo::bar}" now counts as mere delimitation, not as a bareword inside a | |
348 | reference block. | |
349 | ||
350 | NETaa13188: for backward compatibility, looks for "perl -" before "perl". | |
351 | From: Russell Mosemann | |
352 | Files patched: toke.c | |
353 | Now allows non-whitespace characters on the #! line between the "perl" | |
354 | and the "-". | |
355 | ||
356 | NETaa13188: now allows non-whitespace after #!...perl before switches. | |
357 | Files patched: toke.c | |
358 | (same) | |
359 | ||
360 | NETaa13189: derivative files need to be removed before recreation | |
361 | From: Simon Leinen | |
362 | Also: Dick Middleton | |
363 | Also: David J. MacKenzie | |
364 | Files patched: embed_h.sh x2p/Makefile.SH | |
365 | Fixed various little nits as suggested in several messages. | |
366 | ||
367 | NETaa13190: certain assignments can spoof pod directive recognizer | |
368 | From: Ilya Zakharevich | |
369 | Files patched: toke.c | |
370 | The lexer now only recognizes pod directives where a statement is expected. | |
371 | ||
372 | NETaa13194: now returns undef when there is no curpm. | |
373 | From: lusol@Dillon.CC.Lehigh.EDU | |
374 | Files patched: mg.c | |
375 | Since there was no regexp prior to the "use", it was returning whatever the | |
376 | last successful match was within the "use", because there was no current | |
f58c54f0 | 377 | regexp, so it treated it as a normal variable. It now returns undef. |
59c9ff65 | 378 | |
379 | NETaa13195: semop had one S too many. | |
380 | From: Joachim Huober | |
381 | Files patched: opcode.pl | |
382 | The entry in opcode.pl had one too many S's. | |
383 | ||
384 | NETaa13196: always assumes it's a Perl script if -c is used. | |
385 | From: Dan Carson | |
386 | Files patched: toke.c | |
387 | It now will assume it's a Perl script if the -c switch is used. | |
388 | ||
389 | NETaa13197: changed implicit -> message to be more understandable. | |
390 | From: Bruce Barnett | |
391 | Files patched: op.c pod/perldiag.pod | |
f58c54f0 | 392 | I changed the error message to be more understandable. It now says |
59c9ff65 | 393 | |
394 | Can't use subscript on sort... | |
395 | ||
396 | ||
397 | NETaa13201: added OPpCONST_ENTERED flag to properly enter filehandle symbols. | |
398 | From: E. Jay Berkenbilt | |
399 | Also: Tom Christiansen | |
400 | Files patched: op.c op.h toke.c | |
401 | The grammatical reduction of a print statement didn't properly count | |
402 | the filehandle as a symbol reference because it couldn't distinguish | |
403 | between a symbol entered earlier in the program and a symbol entered | |
404 | for the first time down in the lexer. | |
405 | ||
406 | NETaa13203: README shouldn't mention uperl.o any more. | |
407 | From: Anno Siegel | |
408 | Files patched: README | |
409 | ||
410 | NETaa13204: .= shouldn't warn on uninitialized target. | |
411 | From: Pete Peterson | |
412 | Files patched: pp_hot.c | |
413 | No longer warns on uninitialized target of .= operator. | |
414 | ||
415 | NETaa13206: handy macros in XSUB.h | |
416 | From: Tim Bunce | |
417 | Files patched: XSUB.h | |
418 | Added suggested macros. | |
419 | ||
420 | NETaa13228: commonality checker didn't treat lexicals as variables. | |
421 | From: mcook@cognex.com | |
422 | Files patched: op.c opcode.pl | |
423 | The list assignment operator tries to avoid unnecessary copies by doing the | |
424 | assignment directly if there are no common variables on either side of the | |
425 | equals. Unfortunately, the code that decided that only recognized references | |
426 | to dynamic variables, not lexical variables. | |
427 | ||
428 | NETaa13229: fixed sign stuff for complement, integer coercion. | |
429 | From: Larry Wall | |
430 | Files patched: perl.h pp.c sv.c | |
431 | Fixed ~0 and integer coercions. | |
432 | ||
433 | NETaa13230: no longer tries to reuse scratchpad temps if tainting in effect. | |
434 | From: Luca Fini | |
435 | Files patched: op.c | |
436 | I haven't reproduced it, but I believe the problem is the reuse of scratchpad | |
437 | temporaries between statements. I've made it not try to reuse them if | |
438 | tainting is in effect. | |
439 | ||
440 | NETaa13231: *foo = *bar now prevents typo warnings on "foo" | |
441 | From: Robin Barker | |
442 | Files patched: sv.c | |
443 | Aliasing of the form *foo = *bar is now protected from the typo warnings. | |
444 | Previously only the *foo = \$bar form was. | |
445 | ||
446 | NETaa13235: require BAREWORD now introduces package name immediately. | |
447 | From: Larry Wall | |
448 | Files patched: toke.c | |
449 | require BAREWORD now introduces package name immediately. This lets the | |
450 | method intuit code work right even though the require hasn't actually run | |
451 | yet. | |
452 | ||
453 | NETaa13289: didn't calculate correctly using arybase. | |
454 | From: Jared Rhine | |
455 | Files patched: pp.c pp_hot.c | |
456 | The runtime code didn't use curcop->cop_arybase correctly. | |
457 | ||
458 | NETaa13301: store now throws exception on error | |
459 | From: Barry Friedman | |
460 | Files patched: ext/GDBM_File/GDBM_File.xs ext/NDBM_File/NDBM_File.xs ext/ODBM_File/ODBM_File.xs ext/SDBM_File/SDBM_File.xs | |
461 | Changed warn to croak in ext/*DBM_File/*.xs. | |
462 | ||
463 | NETaa13302: ctime now takes Time_t rather than Time_t*. | |
464 | From: Rodger Anderson | |
465 | Files patched: ext/POSIX/POSIX.xs | |
466 | Now declares a Time_t and takes the address of that in CODE. | |
467 | ||
468 | NETaa13302: shorter way to do this patch | |
469 | Files patched: ext/POSIX/POSIX.xs | |
470 | (same) | |
471 | ||
472 | NETaa13304: could feed too large $@ back into croak, whereupon it croaked. | |
473 | From: Larry Wall | |
474 | Files patched: perl.c | |
475 | callist() could feed $@ back into croak with more than a bare %s. (croak() | |
476 | handles long strings with a bare %s okay.) | |
477 | ||
478 | NETaa13305: compiler misoptimized RHS to outside of s/a/print/e | |
479 | From: Brian S. Cashman <bsc@umich.edu> | |
480 | Files patched: op.c | |
481 | The syntax tree was being misconstructed because the compiler felt that | |
482 | the RHS was invariant, so it did it outside the s///. | |
483 | ||
484 | NETaa13314: assigning mortal to lexical leaks | |
485 | From: Larry Wall | |
486 | Files patched: sv.c | |
487 | In stealing strings, sv_setsv was checking SvPOK to see if it should free | |
488 | the destination string. It should have been checking SvPVX. | |
489 | ||
490 | NETaa13316: wait4pid now recalled when errno == EINTR | |
491 | From: Robert J. Pankratz | |
492 | Files patched: pp_sys.c util.c | |
493 | system() and the close() of a piped open now recall wait4pid if it returned | |
494 | prematurely with errno == EINTR. | |
495 | ||
496 | NETaa13329: needed to localize taint magic | |
497 | From: Brian Katzung | |
498 | Files patched: sv.c doio.c mg.c pp_hot.c pp_sys.c scope.c taint.c | |
499 | Taint magic is now localized better, though I had to resort to a kludge | |
500 | to allow a value to be both tainted and untainted simultaneously during | |
501 | the assignment of | |
502 | ||
503 | local $foo = $_[0]; | |
504 | ||
505 | when $_[0] is a reference to the variable $foo already. | |
506 | ||
507 | NETaa13341: clarified interaction of AnyDBM_File::ISA and "use" | |
508 | From: Ian Phillipps | |
509 | Files patched: pod/modpods/AnyDBMFile.pod | |
510 | The doc was misleading. | |
511 | ||
512 | NETaa13342: grep and map with block would enter block but never leave it. | |
513 | From: Ian Phillipps | |
514 | Files patched: op.c | |
515 | The compiler use some sort-checking code to handle the arguments of | |
f58c54f0 | 516 | grep and map. Unfortunately, this wiped out the block exit opcode while |
59c9ff65 | 517 | leaving the block entry opcode. This doesn't matter to sort, but did |
518 | matter to grep and map. It now leave the block entry intact. | |
519 | ||
520 | The reason it worked without the my is because the block entry and exit | |
521 | were optimized away to an OP_SCOPE, which it doesn't matter if it's there | |
522 | or not. | |
523 | ||
524 | NETaa13343: goto needed to longjmp when in a signal handler. | |
525 | From: Robert Partington | |
526 | Files patched: pp_ctl.c | |
527 | goto needed to longjmp() when in a signal handler to get back into the | |
528 | right run() context. | |
529 | ||
530 | ||
531 | NETaa13344: strict vars shouldn't apply to globs or filehandles. | |
532 | From: Andrew Wilcox | |
533 | Files patched: gv.c | |
534 | Filehandles and globs will be excepted from "strict vars", so that you can | |
535 | do the standard Perl 4 trick of | |
536 | ||
537 | use strict; | |
538 | sub foo { | |
f58c54f0 NC |
539 | local(*IN); |
540 | open(IN,"file"); | |
59c9ff65 | 541 | } |
542 | ||
543 | ||
544 | NETaa13345: assert.pl didn't use package DB | |
545 | From: Hans Mulder | |
546 | Files patched: lib/assert.pl | |
547 | Now it does. | |
548 | ||
549 | NETaa13348: av_undef didn't free scalar representing $#foo. | |
550 | From: David Filo | |
551 | Files patched: av.c | |
552 | av_undef didn't free scalar representing $#foo. | |
553 | ||
554 | NETaa13349: sort sub accumulated save stack entries | |
555 | From: David Filo | |
556 | Files patched: pp_ctl.c | |
f58c54f0 | 557 | COMMON only gets set if assigning to @_, which is reasonable. Most of the |
59c9ff65 | 558 | problem was a memory leak. |
559 | ||
560 | NETaa13351: didn't treat indirect filehandles as references. | |
561 | From: Andy Dougherty | |
562 | Files patched: op.c | |
563 | Now produces | |
564 | ||
565 | Can't use an undefined value as a symbol reference at ./foo line 3. | |
566 | ||
567 | ||
568 | NETaa13352: OP_SCOPE allocated as UNOP rather than LISTOP. | |
569 | From: Andy Dougherty | |
570 | Files patched: op.c | |
571 | ||
572 | NETaa13353: scope() didn't release filegv on OP_SCOPE optimization. | |
573 | From: Larry Wall | |
574 | Files patched: op.c | |
575 | When scope() nulled out a NEXTSTATE, it didn't release its filegv reference. | |
576 | ||
577 | NETaa13355: hv_delete now avoids useless mortalcopy | |
578 | From: Larry Wall | |
579 | Files patched: hv.c op.c pp.c pp_ctl.c proto.h scope.c util.c | |
580 | hv_delete now avoids useless mortalcopy. | |
581 | ||
582 | ||
583 | NETaa13359: comma operator section missing its heading | |
584 | From: Larry Wall | |
585 | Files patched: pod/perlop.pod | |
586 | ||
587 | NETaa13359: random typo | |
588 | Files patched: pod/perldiag.pod | |
589 | ||
590 | NETaa13360: code to handle partial vec values was bogus. | |
591 | From: Conrad Augustin | |
592 | Files patched: pp.c | |
593 | The code that Mark J. added a long time ago to handle values that were partially | |
594 | off the end of the string was incorrect. | |
595 | ||
596 | NETaa13361: made it not interpolate inside regexp comments | |
597 | From: Martin Jost | |
598 | Files patched: toke.c | |
599 | To avoid surprising people, it no longer interpolates inside regexp | |
600 | comments. | |
601 | ||
602 | NETaa13362: ${q[1]} should be interpreted like it used to | |
603 | From: Hans Mulder | |
604 | Files patched: toke.c | |
605 | Now resolves ${keyword[1]} to $keyword[1] and warns if -w. Likewise for {}. | |
606 | ||
607 | NETaa13363: meaning of repeated search chars undocumented in tr/// | |
608 | From: Stephen P. Potter | |
609 | Files patched: pod/perlop.pod | |
610 | Documented that repeated characters use the first translation given. | |
611 | ||
612 | NETaa13365: if closedir fails, don't try it again. | |
613 | From: Frank Crawford | |
614 | Files patched: pp_sys.c | |
615 | Now does not attempt to closedir a second time. | |
616 | ||
617 | NETaa13366: can't do block scope optimization on $1 et al when tainting. | |
618 | From: Andrew Vignaux | |
619 | Files patched: toke.c | |
620 | The tainting mechanism assumes that every statement starts out | |
621 | untainted. Unfortunately, the scope removal optimization for very | |
622 | short blocks removed the statementhood of statements that were | |
623 | attempting to read $1 as an untainted value, with the effect that $1 | |
f58c54f0 | 624 | appeared to be tainted anyway. The optimization is now disabled when |
59c9ff65 | 625 | tainting and the block contains $1 (or equivalent). |
626 | ||
627 | NETaa13366: fixed this a better way in toke.c. | |
628 | Files patched: op.c | |
629 | (same) | |
630 | ||
631 | NETaa13366: need to disable scope optimization when tainting. | |
632 | Files patched: op.c | |
633 | (same) | |
634 | ||
635 | NETaa13367: Did a SvCUR_set without nulling out final char. | |
636 | From: "Rob Henderson" <robh@cs.indiana.edu> | |
637 | Files patched: doop.c pp.c pp_sys.c | |
638 | When do_vop set the length on its result string it neglected to null-terminate | |
639 | it. | |
640 | ||
641 | NETaa13368: bigrat::norm sometimes chucked sign | |
642 | From: Greg Kuperberg | |
643 | Files patched: lib/bigrat.pl | |
644 | The normalization routine was assuming that the gcd of two numbers was | |
645 | never negative, and based on that assumption managed to move the sign | |
646 | to the denominator, where it was deleted on the assumption that the | |
647 | denominator is always positive. | |
648 | ||
649 | NETaa13368: botched previous patch | |
650 | Files patched: lib/bigrat.pl | |
651 | (same) | |
652 | ||
653 | NETaa13369: # is now a comment character, and \# should be left for regcomp. | |
654 | From: Simon Parsons | |
655 | Files patched: toke.c | |
656 | It was not skipping the comment when it skipped the white space, and constructed | |
657 | an opcode that tried to match a null string. Unfortunately, the previous | |
658 | star tried to use the first character of the null string to optimize where | |
659 | to recurse, so it never matched. | |
660 | ||
661 | NETaa13369: comment after regexp quantifier induced non-match. | |
662 | Files patched: regcomp.c | |
663 | (same) | |
664 | ||
665 | NETaa13370: some code assumed SvCUR was of type int. | |
666 | From: Spider Boardman | |
667 | Files patched: pp_sys.c | |
668 | Did something similar to the proposed patch. I also fixed the problem that | |
f58c54f0 | 669 | it assumed the type of SvCUR was int. And fixed get{peer,sock}name the |
59c9ff65 | 670 | same way. |
671 | ||
672 | NETaa13375: sometimes dontbother wasn't added back into strend. | |
673 | From: Jamshid Afshar | |
674 | Files patched: regexec.c | |
675 | When the /g modifier was used, the regular expression code would calculate | |
676 | the end of $' too short by the minimum number of characters the pattern could | |
677 | match. | |
678 | ||
679 | NETaa13375: sv_setpvn now disallows negative length. | |
680 | Files patched: sv.c | |
681 | (same) | |
682 | ||
683 | NETaa13376: suspected indirect objecthood prevented recognition of lexical. | |
684 | From: Gisle.Aas@nr.no | |
685 | Files patched: toke.c | |
686 | When $data[0] is used in a spot that might be an indirect object, the lexer | |
687 | was getting confused over the rule that says the $data in $$data[0] isn't | |
688 | an array element. (The lexer uses XREF state for both indirect objects | |
689 | and for variables used as names.) | |
690 | ||
691 | NETaa13377: -I processesing ate remainder of #! line. | |
692 | From: Darrell Schiebel | |
693 | Files patched: perl.c | |
694 | I made the -I processing in moreswitches look for the end of the string, | |
695 | delimited by whitespace. | |
696 | ||
697 | NETaa13379: ${foo} now treated the same outside quotes as inside | |
698 | From: Hans Mulder | |
699 | Files patched: toke.c | |
700 | ${bareword} is now treated the same outside quotes as inside. | |
701 | ||
702 | NETaa13379: previous fix for this bug was botched | |
703 | Files patched: toke.c | |
704 | (same) | |
705 | ||
706 | NETaa13381: TEST should check for perl link | |
707 | From: Andy Dougherty | |
708 | Files patched: t/TEST | |
709 | die "You need to run \"make test\" first to set things up.\n" unless -e 'perl'; | |
710 | ||
711 | ||
712 | NETaa13384: fixed version 0.000 botch. | |
713 | From: Larry Wall | |
714 | Files patched: installperl | |
715 | ||
716 | NETaa13385: return 0 from required file loses message | |
717 | From: Malcolm Beattie | |
718 | Files patched: pp_ctl.c | |
719 | Works right now. | |
720 | ||
721 | NETaa13387: added pod2latex | |
722 | From: Taro KAWAGISHI | |
723 | Files patched: MANIFEST pod/pod2latex | |
724 | Added most recent copy to pod directory. | |
725 | ||
726 | NETaa13388: constant folding now prefers integer results over double | |
727 | From: Ilya Zakharevich | |
728 | Files patched: op.c | |
729 | Constant folding now prefers integer results over double. | |
730 | ||
731 | NETaa13389: now treats . and exec as shell metathingies | |
732 | From: Hans Mulder | |
733 | Files patched: doio.c | |
734 | Now treats . and exec as shell metathingies. | |
735 | ||
736 | NETaa13395: eval didn't check taintedness. | |
737 | From: Larry Wall | |
738 | Files patched: pp_ctl.c | |
739 | ||
740 | NETaa13396: $^ coredumps at end of string | |
741 | From: Paul Rogers | |
742 | Files patched: toke.c | |
743 | The scan_ident() didn't check for a null following $^. | |
744 | ||
745 | NETaa13397: improved error messages when operator expected | |
746 | From: Larry Wall | |
747 | Files patched: toke.c | |
748 | Added message (Do you need to predeclare BAR?). Also fixed the missing | |
749 | semicolon message. | |
750 | ||
751 | NETaa13399: cleanup by Andy | |
752 | From: Larry Wall | |
753 | Files patched: Changes Configure Makefile.SH README cflags.SH config.H config_h.SH deb.c doop.c dump.c ext/DB_File/DB_File.pm ext/DB_File/DB_File.xs ext/DynaLoader/DynaLoader.pm ext/Fcntl/Fcntl.pm ext/GDBM_File/GDBM_File.pm ext/POSIX/POSIX.pm ext/SDBM_File/sdbm/sdbm.h ext/Socket/Socket.pm ext/util/make_ext h2xs.SH hints/aix.sh hints/bsd386.sh hints/dec_osf.sh hints/esix4.sh hints/freebsd.sh hints/irix_5.sh hints/next_3_2.sh hints/sunos_4_1.sh hints/svr4.sh hints/ultrix_4.sh installperl lib/AutoSplit.pm lib/Cwd.pm lib/ExtUtils/MakeMaker.pm lib/ExtUtils/xsubpp lib/Term/Cap.pm mg.c miniperlmain.c perl.c perl.h perl_exp.SH pod/Makefile pod/perldiag.pod pod/pod2html pp.c pp_ctl.c pp_hot.c pp_sys.c proto.h sv.h t/re_tests util.c x2p/Makefile.SH x2p/a2p.h x2p/a2py.c x2p/handy.h x2p/hash.c x2p/hash.h x2p/str.c x2p/str.h x2p/util.c x2p/util.h x2p/walk.c | |
754 | ||
755 | NETaa13399: cleanup from Andy | |
756 | Files patched: MANIFEST | |
757 | ||
758 | NETaa13399: configuration cleanup | |
759 | Files patched: Configure Configure MANIFEST MANIFEST Makefile.SH Makefile.SH README config.H config.H config_h.SH config_h.SH configpm ext/DynaLoader/DynaLoader.pm ext/DynaLoader/dl_hpux.xs ext/NDBM_File/Makefile.PL ext/ODBM_File/Makefile.PL ext/util/make_ext handy.h hints/aix.sh hints/hpux_9.sh hints/hpux_9.sh hints/irix_4.sh hints/linux.sh hints/mpeix.sh hints/next_3_2.sh hints/solaris_2.sh hints/svr4.sh installperl installperl lib/AutoSplit.pm lib/ExtUtils/MakeMaker.pm lib/ExtUtils/MakeMaker.pm lib/ExtUtils/xsubpp lib/Getopt/Long.pm lib/Text/Tabs.pm makedepend.SH makedepend.SH mg.c op.c perl.h perl_exp.SH pod/perl.pod pod/perldiag.pod pod/perlsyn.pod pod/pod2man pp_sys.c proto.h proto.h unixish.h util.c util.c vms/config.vms writemain.SH x2p/a2p.h x2p/a2p.h x2p/a2py.c x2p/a2py.c x2p/handy.h x2p/util.c x2p/walk.c x2p/walk.c | |
760 | ||
761 | NETaa13399: new files from Andy | |
762 | Files patched: ext/DB_File/Makefile.PL ext/DynaLoader/Makefile.PL ext/Fcntl/Makefile.PL ext/GDBM_File/Makefile.PL ext/NDBM_File/Makefile.PL ext/ODBM_File/Makefile.PL ext/POSIX/Makefile.PL ext/SDBM_File/Makefile.PL ext/SDBM_File/sdbm/Makefile.PL ext/Socket/Makefile.PL globals.c hints/convexos.sh hints/irix_6.sh | |
763 | ||
764 | NETaa13399: patch0l from Andy | |
765 | Files patched: Configure MANIFEST Makefile.SH config.H config_h.SH ext/DB_File/Makefile.PL ext/GDBM_File/Makefile.PL ext/NDBM_File/Makefile.PL ext/POSIX/POSIX.xs ext/SDBM_File/sdbm/Makefile.PL ext/util/make_ext h2xs.SH hints/next_3_2.sh hints/solaris_2.sh hints/unicos.sh installperl lib/Cwd.pm lib/ExtUtils/MakeMaker.pm makeaperl.SH vms/config.vms x2p/util.c x2p/util.h | |
766 | ||
767 | NETaa13399: stuff from Andy | |
768 | Files patched: Configure MANIFEST Makefile.SH configpm hints/dec_osf.sh hints/linux.sh hints/machten.sh lib/ExtUtils/MakeMaker.pm util.c | |
769 | ||
770 | NETaa13399: Patch 0k from Andy | |
771 | Files patched: Configure MANIFEST Makefile.SH config.H config_h.SH hints/dec_osf.sh hints/mpeix.sh hints/next_3_0.sh hints/ultrix_4.sh installperl lib/ExtUtils/MakeMaker.pm lib/File/Path.pm makeaperl.SH minimod.PL perl.c proto.h vms/config.vms vms/ext/MM_VMS.pm x2p/a2p.h | |
772 | ||
773 | NETaa13399: Patch 0m from Andy | |
774 | Files patched: Configure MANIFEST Makefile.SH README config.H config_h.SH ext/DynaLoader/README ext/POSIX/POSIX.xs ext/SDBM_File/sdbm/sdbm.h ext/util/extliblist hints/cxux.sh hints/linux.sh hints/powerunix.sh lib/ExtUtils/MakeMaker.pm malloc.c perl.h pp_sys.c util.c | |
775 | ||
776 | NETaa13400: pod2html update from Bill Middleton | |
777 | From: Larry Wall | |
778 | Files patched: pod/pod2html | |
779 | ||
780 | NETaa13401: Boyer-Moore code attempts to compile string longer than 255. | |
781 | From: Kyriakos Georgiou | |
782 | Files patched: util.c | |
783 | The Boyer-Moore table uses unsigned char offsets, but the BM compiler wasn't | |
784 | rejecting strings longer than 255 chars, and was miscompiling them. | |
785 | ||
786 | NETaa13403: missing a $ on variable name | |
787 | From: Wayne Scott | |
788 | Files patched: installperl | |
789 | Yup, it was missing. | |
790 | ||
791 | NETaa13406: didn't wipe out dead match when proceeding to next BRANCH | |
792 | From: Michael P. Clemens | |
793 | Files patched: regexec.c | |
794 | The code to check alternatives didn't invalidate backreferences matched by the | |
795 | failed branch. | |
796 | ||
797 | NETaa13407: overload upgrade | |
798 | From: owner-perl5-porters@nicoh.com | |
799 | Also: Ilya Zakharevich | |
800 | Files patched: MANIFEST gv.c lib/Math/BigInt.pm perl.h pod/perlovl.pod pp.c pp.h pp_hot.c sv.c t/lib/bigintpm.t t/op/overload.t | |
801 | Applied supplied patch, and fixed bug induced by use of sv_setsv to do | |
802 | a deep copy, since sv_setsv no longer copies objecthood. | |
803 | ||
804 | NETaa13409: sv_gets tries to grow string at EOF | |
805 | From: Harold O Morris | |
806 | Files patched: sv.c | |
807 | Applied suggested patch, only two statements earlier, since the end code | |
808 | also does SvCUR_set. | |
809 | ||
810 | NETaa13410: delaymagic did =~ instead of &= ~ | |
811 | From: Andreas Schwab | |
812 | Files patched: pp_hot.c | |
813 | Applied supplied patch. | |
814 | ||
815 | NETaa13411: POSIX didn't compile under -DLEAKTEST | |
816 | From: Frederic Chauveau | |
817 | Files patched: ext/POSIX/POSIX.xs | |
818 | Used NEWSV instead of newSV. | |
819 | ||
820 | NETaa13412: new version from Tony Sanders | |
821 | From: Tony Sanders | |
822 | Files patched: lib/Term/Cap.pm | |
823 | Installed as Term::Cap.pm | |
824 | ||
825 | NETaa13413: regmust extractor needed to restart loop on BRANCH for (?:) to work | |
826 | From: DESARMENIEN | |
827 | Files patched: regcomp.c | |
828 | The BRANCH skipper should have restarted the loop from the top. | |
829 | ||
830 | NETaa13414: the check for accidental list context was done after pm_short check | |
831 | From: Michael H. Coen | |
832 | Files patched: pp_hot.c | |
833 | Moved check for accidental list context to before the pm_short optimization. | |
834 | ||
835 | NETaa13418: perlre.pod babbled nonsense about | in character classes | |
836 | From: Philip Hazel | |
837 | Files patched: pod/perlre.pod | |
838 | Removed bogus brackets. Now reads: | |
839 | Note however that "|" is interpreted as a literal with square brackets, | |
840 | so if you write C<[fee|fie|foe]> you're really only matching C<[feio|]>. | |
841 | ||
842 | NETaa13419: need to document introduction of lexical variables | |
843 | From: "Heading, Anthony" | |
844 | Files patched: pod/perlfunc.pod | |
845 | Now mentions that lexicals aren't introduced till after the current statement. | |
846 | ||
847 | NETaa13420: formats that overflowed a page caused endless top of forms | |
848 | From: Hildo@CONSUL.NL | |
849 | Files patched: pp_sys.c | |
850 | If a record is too large to fit on a page, it now prints whatever will | |
851 | fit and then calls top of form again on the remainder. | |
852 | ||
853 | NETaa13423: the code to do negative list subscript in scalar context was missing | |
854 | From: Steve McDougall | |
855 | Files patched: pp.c | |
856 | The negative subscript code worked right in list context but not in scalar | |
857 | context. In fact, there wasn't code to do it in the scalar context. | |
858 | ||
859 | NETaa13424: existing but undefined CV blocked inheritance | |
860 | From: Spider Boardman | |
861 | Files patched: gv.c | |
862 | Applied supplied patch. | |
863 | ||
864 | NETaa13425: removed extra argument to croak | |
865 | From: "R. Bernstein" | |
866 | Files patched: regcomp.c | |
867 | Removed extra argument. | |
868 | ||
869 | NETaa13427: added return types | |
870 | From: "R. Bernstein" | |
871 | Files patched: x2p/a2py.c | |
872 | Applied suggested patch. | |
873 | ||
874 | NETaa13427: added static declarations | |
875 | Files patched: x2p/walk.c | |
876 | (same) | |
877 | ||
878 | NETaa13428: split was assuming that all backreferences were defined | |
879 | From: Dave Schweisguth | |
880 | Files patched: pp.c | |
881 | split was assuming that all backreferences were defined. | |
882 | ||
883 | NETaa13430: hoistmust wasn't hoisting anchored shortcircuit's length | |
884 | From: Tom Christiansen | |
885 | Also: Rob Hooft | |
886 | Files patched: toke.c | |
887 | ||
888 | NETaa13432: couldn't call code ref under debugger | |
889 | From: Mike Fletcher | |
890 | Files patched: op.c pp_hot.c sv.h | |
891 | The debugging code assumed it could remember a name to represent a subroutine, | |
892 | but anonymous subroutines don't have a name. It now remembers a CV reference | |
893 | in that case. | |
894 | ||
895 | NETaa13435: 1' dumped core | |
896 | From: Larry Wall | |
897 | Files patched: toke.c | |
898 | Didn't check a pointer for nullness. | |
899 | ||
900 | NETaa13436: print foo(123) didn't treat foo as subroutine | |
901 | From: mcook@cognex.com | |
902 | Files patched: toke.c | |
903 | Now treats it as a subroutine rather than a filehandle. | |
904 | ||
905 | NETaa13437: &$::foo didn't think $::foo was a variable name | |
906 | From: mcook@cognex.com | |
907 | Files patched: toke.c | |
908 | Now treats $::foo as a global variable. | |
909 | ||
910 | NETaa13439: referred to old package name | |
911 | From: Tom Christiansen | |
912 | Files patched: lib/Sys/Syslog.pm | |
913 | Wasn't a strict refs problem after all. It was simply referring to package | |
914 | syslog, which had been renamed to Sys::Syslog. | |
915 | ||
916 | NETaa13440: stat operations didn't know what to do with glob or ref to glob | |
917 | From: mcook@cognex.com | |
918 | Files patched: doio.c pp_sys.c | |
919 | Now knows about the kinds of filehandles returned by FileHandle constructors | |
920 | and such. | |
921 | ||
922 | NETaa13442: couldn't find name of copy of deleted symbol table entry | |
923 | From: Spider Boardman | |
924 | Files patched: gv.c gv.h | |
925 | I did a much simpler fix. When gp_free notices that it's freeing the | |
926 | master GV, it nulls out gp_egv. The GvENAME and GvESTASH macros know | |
927 | to revert to gv if egv is null. | |
928 | ||
929 | This has the advantage of not creating a reference loop. | |
930 | ||
931 | NETaa13443: couldn't override an XSUB | |
932 | From: William Setzer | |
933 | Files patched: op.c | |
934 | When the newSUB and newXS routines checked for whether the old sub was | |
935 | defined, they only looked at CvROOT(cv), not CvXSUB(cv). | |
936 | ||
937 | NETaa13443: needed to do same thing in newXS | |
938 | Files patched: op.c | |
939 | (same) | |
940 | ||
941 | NETaa13444: -foo now doesn't warn unless sub foo is defined | |
942 | From: Larry Wall | |
943 | Files patched: toke.c | |
944 | Made it not warn on -foo, unless there is a sub foo defined. | |
945 | ||
946 | NETaa13451: in scalar context, pp_entersub now guarantees one item from XSUB | |
947 | From: Nick Gianniotis | |
948 | Files patched: pp_hot.c | |
949 | The pp_entersub routine now guarantees that an XSUB in scalar context | |
950 | returns one and only one value. If there are fewer, it pushes undef, | |
951 | and if there are more, it returns the last one. | |
952 | ||
953 | NETaa13457: now explicitly disallows printf format with 'n' or '*'. | |
954 | From: lees@cps.msu.edu | |
955 | Files patched: doop.c | |
956 | Now says | |
957 | ||
958 | Use of n in printf format not supported at ./foo line 3. | |
959 | ||
960 | ||
961 | NETaa13458: needed to call SvPOK_only() in pp_substr | |
962 | From: Wayne Scott | |
963 | Files patched: pp.c | |
964 | Needed to call SvPOK_only() in pp_substr. | |
965 | ||
966 | NETaa13459: umask and chmod now warn about missing initial 0 even with paren | |
967 | From: Andreas Koenig | |
968 | Files patched: toke.c | |
969 | Now skips parens as well as whitespace looking for argument. | |
970 | ||
971 | NETaa13460: backtracking didn't work on .*? because reginput got clobbered | |
972 | From: Andreas Koenig | |
973 | Files patched: regexec.c | |
974 | When .*? did a probe of the rest of the string, it clobbered reginput, | |
975 | so the next call to match a . tried to match the newline and failed. | |
976 | ||
977 | NETaa13475: \(@ary) now treats array as list of scalars | |
978 | From: Tim Bunce | |
979 | Files patched: op.c | |
980 | The mod() routine now refrains from marking @ary as an lvalue if it's in parens | |
981 | and is the subject of an OP_REFGEN. | |
982 | ||
983 | NETaa13481: accept buffer wasn't aligned good enough | |
984 | From: Holger Bechtold | |
985 | Also: Christian Murphy | |
986 | Files patched: pp_sys.c | |
987 | Applied suggested patch. | |
988 | ||
989 | NETaa13486: while (<>) now means while (defined($_ = <>)) | |
990 | From: Jim Balter | |
991 | Files patched: op.c pod/perlop.pod | |
992 | while (<HANDLE>) now means while (defined($_ = <HANDLE>)). | |
993 | ||
994 | NETaa13500: needed DESTROY in FileHandle | |
995 | From: Tim Bunce | |
996 | Files patched: ext/POSIX/POSIX.pm | |
f58c54f0 | 997 | Added DESTROY method. Also fixed ungensym to use POSIX:: instead of _POSIX. |
59c9ff65 | 998 | Removed ungensym from close method, since DESTROY should do that now. |
999 | ||
1000 | NETaa13502: now complains if you use local on a lexical variable | |
1001 | From: Larry Wall | |
1002 | Files patched: op.c | |
1003 | Now says something like | |
1004 | ||
1005 | Can't localize lexical variable $var at ./try line 6. | |
1006 | ||
1007 | NETaa13512: added $SIG{__WARN__} and $SIG{__DIE__} hooks | |
1008 | From: Larry Wall | |
1009 | Files patched: embed.h gv.c interp.sym mg.c perl.h pod/perlvar.pod pp_ctl.c util.c Todo pod/perldiag.pod | |
1010 | ||
1011 | NETaa13514: statements before intro of lex var could see lex var | |
1012 | From: William Setzer | |
1013 | Files patched: op.c | |
1014 | When a lexical variable is declared, introduction is delayed until | |
1015 | the start of the next statement, so that any initialization code runs | |
f58c54f0 | 1016 | outside the scope of the new variable. Thus, |
59c9ff65 | 1017 | |
1018 | my $y = 3; | |
1019 | my $y = $y; | |
1020 | print $y; | |
1021 | ||
1022 | should print 3. Unfortunately, the declaration was marked with the | |
1023 | beginning location at the time that "my $y" was processed instead of | |
1024 | when the variable was introduced, so any embedded statements within | |
1025 | an anonymous subroutine picked up the wrong "my". The declaration | |
1026 | is now labelled correctly when the variable is actually introduced. | |
1027 | ||
1028 | NETaa13520: added closures | |
1029 | From: Larry Wall | |
1030 | Files patched: Todo cv.h embed.h global.sym gv.c interp.sym op.c perl.c perl.h pod/perlform.pod pp.c pp_ctl.c pp_hot.c sv.c sv.h toke.c | |
1031 | ||
1032 | NETaa13520: test to see if lexical works in a format now | |
1033 | Files patched: t/op/write.t | |
1034 | ||
1035 | NETaa13522: substitution couldn't be used on a substr() | |
1036 | From: Hans Mulder | |
1037 | Files patched: pp_ctl.c pp_hot.c | |
1038 | Changed pp_subst not to use sv_replace() anymore, which didn't handle lvalues | |
1039 | and was overkill anyway. Should be slightly faster this way too. | |
1040 | ||
1041 | NETaa13525: G_EVAL mode in perl_call_sv didn't return values right. | |
1042 | Files patched: perl.c | |
1043 | ||
1044 | NETaa13525: consolidated error message | |
1045 | From: Larry Wall | |
1046 | Files patched: perl.h toke.c | |
1047 | ||
1048 | NETaa13525: derived it | |
1049 | Files patched: perly.h | |
1050 | ||
1051 | NETaa13525: missing some values from embed.h | |
1052 | Files patched: embed.h | |
1053 | ||
1054 | NETaa13525: random cleanup | |
1055 | Files patched: MANIFEST Todo cop.h lib/TieHash.pm lib/perl5db.pl opcode.h patchlevel.h pod/perldata.pod pod/perlsub.pod t/op/ref.t toke.c | |
1056 | ||
f58c54f0 | 1057 | NETaa13525: random cleanup |
59c9ff65 | 1058 | Files patched: pp_ctl.c util.c |
1059 | ||
1060 | NETaa13527: File::Find needed to export $name and $dir | |
1061 | From: Chaim Frenkel | |
1062 | Files patched: lib/File/Find.pm | |
1063 | They are now exported. | |
1064 | ||
1065 | NETaa13528: cv_undef left unaccounted-for GV pointer in CV | |
1066 | From: Tye McQueen | |
1067 | Also: Spider Boardman | |
1068 | Files patched: op.c | |
1069 | ||
1070 | NETaa13530: scalar keys now resets hash iterator | |
1071 | From: Tim Bunce | |
1072 | Files patched: doop.c | |
1073 | scalar keys() now resets the hash iterator. | |
1074 | ||
1075 | NETaa13531: h2ph doesn't check defined right | |
1076 | From: Casper H.S. Dik | |
1077 | Files patched: h2ph.SH | |
1078 | ||
1079 | NETaa13540: VMS update | |
1080 | From: Larry Wall | |
1081 | Files patched: MANIFEST README.vms doio.c embed.h ext/DynaLoader/dl_vms.xs interp.sym lib/Cwd.pm lib/ExtUtils/xsubpp lib/File/Basename.pm lib/File/Find.pm lib/File/Path.pm mg.c miniperlmain.c perl.c perl.h perly.c perly.c.diff pod/perldiag.pod pp_ctl.c pp_hot.c pp_sys.c proto.h util.c vms/Makefile vms/config.vms vms/descrip.mms vms/ext/Filespec.pm vms/ext/MM_VMS.pm vms/ext/VMS/stdio/Makefile.PL vms/ext/VMS/stdio/stdio.pm vms/ext/VMS/stdio/stdio.xs vms/genconfig.pl vms/perlvms.pod vms/sockadapt.c vms/sockadapt.h vms/vms.c vms/vmsish.h vms/writemain.pl | |
1082 | ||
1083 | NETaa13540: got some duplicate code | |
1084 | Files patched: lib/File/Path.pm | |
1085 | ||
1086 | NETaa13540: stuff from Charles | |
1087 | Files patched: MANIFEST README.vms lib/ExtUtils/MakeMaker.pm lib/ExtUtils/MakeMaker.pm lib/ExtUtils/xsubpp lib/File/Basename.pm lib/File/Path.pm perl.c perl.h pod/perldiag.pod pod/perldiag.pod vms/Makefile vms/Makefile vms/config.vms vms/config.vms vms/descrip.mms vms/descrip.mms vms/ext/Filespec.pm vms/ext/Filespec.pm vms/ext/MM_VMS.pm vms/ext/MM_VMS.pm vms/ext/VMS/stdio/stdio.pm vms/ext/VMS/stdio/stdio.xs vms/gen_shrfls.pl vms/gen_shrfls.pl vms/genconfig.pl vms/genconfig.pl vms/mms2make.pl vms/perlvms.pod vms/sockadapt.h vms/test.com vms/vms.c vms/vms.c vms/vmsish.h vms/vmsish.h vms/writemain.pl | |
1088 | ||
1089 | NETaa13540: tweak from Charles | |
1090 | Files patched: lib/File/Path.pm | |
1091 | ||
1092 | NETaa13552: scalar unpack("P4",...) ignored the 4 | |
1093 | From: Eric Arnold | |
1094 | Files patched: pp.c | |
1095 | The optimization that tried to do only one item in a scalar context didn't | |
1096 | realize that the argument to P was not a repeat count. | |
1097 | ||
1098 | NETaa13553: now warns about 8 or 9 in octal escapes | |
1099 | From: Mike Rogers | |
1100 | Files patched: util.c | |
1101 | Now warns if it finds 8 or 9 before the end of the octal escape sequence. | |
1102 | So \039 produces a warning, but \0339 does not. | |
1103 | ||
1104 | NETaa13554: now allows foreach ${"name"} | |
1105 | From: Johan Holtman | |
1106 | Files patched: op.c | |
1107 | Instead of trying to remove OP_RV2SV, the compiler now just transmutes it into an | |
1108 | OP_RV2GV, which is a no-op for ordinary variables and does the right | |
1109 | thing for ${"name"}. | |
1110 | ||
1111 | NETaa13559: substitution now always checks for readonly | |
1112 | From: Rodger Anderson | |
1113 | Files patched: pp_hot.c | |
1114 | Substitution now always checks for readonly. | |
1115 | ||
1116 | NETaa13561: added explanations of closures and curly-quotes | |
1117 | From: Larry Wall | |
1118 | Files patched: pod/perlref.pod | |
1119 | ||
1120 | NETaa13562: null components in path cause indigestion | |
1121 | From: Ambrose Kofi Laing | |
1122 | Files patched: lib/Cwd.pm lib/pwd.pl | |
1123 | ||
1124 | NETaa13575: documented semantics of negative substr length | |
1125 | From: Jeff Bouis | |
1126 | Files patched: pod/perlfunc.pod | |
1127 | Documented the fact that negative length now leaves characters off the end, | |
1128 | and while I was at it, made it work right even if offset wasn't 0. | |
1129 | ||
1130 | NETaa13575: negative length to substr didn't work when offset non-zero | |
1131 | Files patched: pp.c | |
1132 | (same) | |
1133 | ||
1134 | NETaa13575: random cleanup | |
1135 | Files patched: pod/perlfunc.pod | |
1136 | (same) | |
1137 | ||
1138 | NETaa13580: couldn't localize $ACCUMULATOR | |
1139 | From: Larry Wall | |
1140 | Files patched: gv.c lib/English.pm mg.c perl.c sv.c | |
1141 | Needed to make $^A a real magical variable. Also lib/English.pm wasn't | |
1142 | exporting good. | |
1143 | ||
1144 | NETaa13583: doc mods from Tom | |
1145 | From: Larry Wall | |
1146 | Files patched: pod/modpods/AnyDBMFile.pod pod/modpods/Basename.pod pod/modpods/Benchmark.pod pod/modpods/Cwd.pod pod/modpods/Dynaloader.pod pod/modpods/Exporter.pod pod/modpods/Find.pod pod/modpods/Finddepth.pod pod/modpods/Getopt.pod pod/modpods/MakeMaker.pod pod/modpods/Open2.pod pod/modpods/POSIX.pod pod/modpods/Ping.pod pod/modpods/less.pod pod/modpods/strict.pod pod/perlapi.pod pod/perlbook.pod pod/perldata.pod pod/perlform.pod pod/perlfunc.pod pod/perlipc.pod pod/perlmod.pod pod/perlobj.pod pod/perlref.pod pod/perlrun.pod pod/perlsec.pod pod/perlsub.pod pod/perltrap.pod pod/perlvar.pod | |
1147 | ||
1148 | NETaa13589: return was enforcing list context on its arguments | |
1149 | From: Tim Freeman | |
1150 | Files patched: opcode.pl | |
1151 | A return was being treated like a normal list operator, in that it was | |
f58c54f0 | 1152 | setting list context on its arguments. This was bogus. |
59c9ff65 | 1153 | |
1154 | NETaa13591: POSIX::creat used wrong argument | |
1155 | From: Paul Marquess | |
1156 | Files patched: ext/POSIX/POSIX.pm | |
1157 | Applied suggested patch. | |
1158 | ||
1159 | NETaa13605: use strict refs error message now displays bad ref | |
1160 | From: Peter Gordon | |
1161 | Files patched: perl.h pod/perldiag.pod pp.c pp_hot.c | |
1162 | Now says | |
1163 | ||
1164 | Can't use string ("2") as a HASH ref while "strict refs" in use at ./foo line 12. | |
1165 | ||
1166 | NETaa13630: eof docs were unclear | |
1167 | From: Hallvard B Furuseth | |
1168 | Files patched: pod/perlfunc.pod | |
1169 | Applied suggested patch. | |
1170 | ||
1171 | NETaa13636: $< and $> weren't refetched on undump restart | |
1172 | From: Steve Pearlmutter | |
1173 | Files patched: perl.c | |
1174 | The code in main() bypassed perl_construct on an undump restart, which bypassed | |
1175 | the code that set $< and $>. | |
1176 | ||
1177 | NETaa13641: added Tim's fancy new import whizbangers | |
1178 | From: Tim Bunce | |
1179 | Files patched: lib/Exporter.pm | |
1180 | Applied suggested patch. | |
1181 | ||
1182 | NETaa13649: couldn't AUTOLOAD a symbol reference | |
1183 | From: Larry Wall | |
1184 | Files patched: pp_hot.c | |
1185 | pp_entersub needed to guarantee a CV so it would get to the AUTOLOAD code. | |
1186 | ||
1187 | NETaa13651: renamed file had wrong package name | |
1188 | From: Andreas Koenig | |
1189 | Files patched: lib/File/Path.pm | |
1190 | Applied suggested patch. | |
1191 | ||
1192 | NETaa13660: now that we're testing distribution we can diagnose RANDBITS errors | |
1193 | From: Karl Glazebrook | |
1194 | Files patched: t/op/rand.t | |
1195 | Changed to suggested algorithm. Also duplicated it to test rand(100) too. | |
1196 | ||
1197 | NETaa13660: rand.t didn't test for proper distribution within range | |
1198 | Files patched: t/op/rand.t | |
1199 | (same) | |
1200 | ||
1201 | NETaa13671: array slice misbehaved in a scalar context | |
1202 | From: Tye McQueen | |
1203 | Files patched: pp.c | |
1204 | A spurious else prevented the scalar-context-handling code from running. | |
1205 | ||
1206 | NETaa13672: filehandle constructors in POSIX don't return failure successfully | |
1207 | From: Ian Phillipps | |
1208 | Files patched: ext/POSIX/POSIX.pm | |
1209 | Applied suggested patch. | |
1210 | ||
1211 | ||
1212 | NETaa13678: forced $1 to always be untainted | |
1213 | From: Ka-Ping Yee | |
1214 | Files patched: mg.c | |
1215 | I believe the bug that triggered this was fixed elsewhere, but just in case, | |
1216 | I put in explicit code to force $1 et al not to be tainted regardless. | |
1217 | ||
1218 | NETaa13682: formline doc need to discuss ~ and ~~ policy | |
1219 | From: Peter Gordon | |
1220 | Files patched: pod/perlfunc.pod | |
1221 | ||
1222 | NETaa13686: POSIX::open and POSIX::mkfifo didn't check tainting | |
1223 | From: Larry Wall | |
1224 | Files patched: ext/POSIX/POSIX.xs | |
1225 | open() and mkfifo() now check tainting. | |
1226 | ||
1227 | NETaa13687: new Exporter.pm | |
1228 | From: Tim Bunce | |
1229 | Files patched: lib/Exporter.pm | |
1230 | Added suggested changes, except for @EXPORTABLE, because it looks too much | |
1231 | like @EXPORTTABLE. Decided to stick with @EXPORT_OK because it looks more | |
1232 | like an adjunct. Also added an export_tags routine. The keys in the | |
1233 | %EXPORT_TAGS hash no longer use colons, to make the initializers prettier. | |
1234 | ||
f58c54f0 | 1235 | NETaa13687: new Exporter.pm |
59c9ff65 | 1236 | Files patched: ext/POSIX/POSIX.pm |
1237 | (same) | |
1238 | ||
1239 | NETaa13694: add sockaddr_in to Socket.pm | |
1240 | From: Tim Bunce | |
1241 | Files patched: ext/Socket/Socket.pm | |
1242 | Applied suggested patch. | |
1243 | ||
1244 | NETaa13695: library routines should use qw() as good example | |
1245 | From: Dean Roehrich | |
1246 | Files patched: ext/DB_File/DB_File.pm ext/DynaLoader/DynaLoader.pm ext/Fcntl/Fcntl.pm ext/GDBM_File/GDBM_File.pm ext/POSIX/POSIX.pm ext/Socket/Socket.pm | |
1247 | Applied suggested patch. | |
1248 | ||
1249 | NETaa13696: myconfig should be a routine in Config.pm | |
1250 | From: Kenneth Albanowski | |
1251 | Files patched: configpm | |
1252 | Applied suggested patch. | |
1253 | ||
1254 | NETaa13704: fdopen closed fd on failure | |
1255 | From: Hallvard B Furuseth | |
1256 | Files patched: doio.c | |
1257 | Applied suggested patch. | |
1258 | ||
1259 | NETaa13706: Term::Cap doesn't work | |
1260 | From: Dean Roehrich | |
1261 | Files patched: lib/Term/Cap.pm | |
1262 | Applied suggested patch. | |
1263 | ||
1264 | NETaa13710: cryptswitch needed to be more "useable" | |
1265 | From: Tim Bunce | |
1266 | Files patched: embed.h global.sym perl.h toke.c | |
1267 | The cryptswitch_fp function now can operate in two modes. It can | |
1268 | modify the global rsfp to redirect input as before, or it can modify | |
1269 | linestr and return true, indicating that it is not necessary for yylex | |
1270 | to read another line since cryptswitch_fp has just done it. | |
1271 | ||
1272 | NETaa13712: new_tmpfile() can't be called as constructor | |
1273 | From: Hans Mulder | |
1274 | Files patched: ext/POSIX/POSIX.xs | |
1275 | Now allows new_tmpfile() to be called as a constructor. | |
1276 | ||
1277 | NETaa13714: variable method call not documented | |
1278 | From: "Randal L. Schwartz" | |
1279 | Files patched: pod/perlobj.pod | |
1280 | Now indicates that OBJECT->$method() works. | |
1281 | ||
1282 | NETaa13715: PACK->$method produces spurious warning | |
1283 | From: Larry Wall | |
1284 | Files patched: toke.c | |
1285 | The -> operator was telling the lexer to expect an operator when the | |
1286 | next thing was a variable. | |
1287 | ||
1288 | NETaa13716: Carp now allows multiple packages to be skipped out of | |
1289 | From: Larry Wall | |
1290 | Files patched: lib/Carp.pm | |
1291 | The subroutine redefinition warnings now warn on import collisions. | |
1292 | ||
1293 | NETaa13716: Exporter catches warnings and gives a better line number | |
1294 | Files patched: lib/Exporter.pm | |
1295 | (same) | |
1296 | ||
1297 | NETaa13716: now counts imported routines as "defined" for redef warnings | |
1298 | Files patched: op.c sv.c | |
1299 | (same) |