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