19 years ago[differences between patch application from Change 984 and Change 985] timinatorII
Tim Bunce [Fri, 15 May 1998 15:02:43 +0000 (15:02 +0000)] 
[differences between patch application from Change 984 and Change 985]

 Title:  "ExtUtils::Manifest could truncate files during "make dist""
  From:  "James E Jurach Jr." <>, (Andreas J. Koenig)
Msg-ID:  <>,
 Files:  lib/ExtUtils/

 Title:  "AutoSplit/AutoLoaded subs: give useful line numbers in warnings etc"
  From:  "Jesse N. Glick" <>, (Andreas
         J. Koenig), (Larry Wall)
Msg-ID:  <>, <>,
 Files:  lib/

p4raw-link: @984 on //depot/maint-5.004/perl: aaffd3c27a04135bbc287616252cc5830b7c5543
p4raw-id: //depot/maint-5.004/perl@985

19 years agoAutosplit doesn't like upper case letters in sub names on VMS
Dan Sugalski [Fri, 15 May 1998 15:02:43 +0000 (03:02 +1200)] 
Autosplit doesn't like upper case letters in sub names on VMS

Autosplit.PM mis-behaves a bit on VMS. When it creates its auto-split
.al files, it assumes that the filename will be the same as the sub name
including case. This turns out not to be the case for VMS, whose file
system upcases all filenames, and whose CRTL then downcases all filenames.
Any sub whose name has an uppercase letter in it will end up with a file with
an all-lowercase name.

This would not be a problem, except that the autosplit_file sub then goes and
deletes any .al files whose names do not exactly match (including case) the
names of a sub. This nukes the (lower-cased filename) files for any sub
that's got upper-case letters in its name, which pretty much kills the module

The following patch fixes this for VMS. Current behavior's preserved for
everyone else, of course. (The -V output at the end is incorrect in this
case--the patch was made to my 5.004_04 sources, and tested with them)


19 years agoallow die $ref
Graham Barr [Thu, 14 May 1998 19:34:05 +0000 (07:34 +1200)] 
allow die $ref

Tim Bunce wrote:
> Does
>         eval { die $ref };
>         die if $@;
> propagate the original ref?

No, but here is a new patch against perl5.004_04-m1 which does

> Are 'we' happy to loose the "\n...propagated at ..." functionality
> of a die without arguments when $@ contains a ref? I guess it's the
> only reasonable way to go.

Well this is what started off the definition of The thought
was that maybe that if $ref is an object it should support a given
API. Then we could have methods for propagate and stringify which
perl would call at appropriate times.

Credited: Tim Bunce <>
Credited: (Tim Bunce) (Tim Bunce)

Credited: Tim Bunce <>
Credited: (Tim Bunce) (Tim Bunce)

19 years ago[differences between patch application from Change 982 and Change 984]
Tim Bunce [Fri, 15 May 1998 14:18:52 +0000 (14:18 +0000)] 
[differences between patch application from Change 982 and Change 984]

 ------  CORE LANGUAGE  ------

 Title:  "Fix close pipe returning status from wrong child"
  From:  "M.J.T. Guy" <>, ()
Msg-ID:  <>,
 Files:  t/io/pipe.t util.c

 Title:  "Avoid triggering load of"
  From:  Tim Bunce
 Files:  gv.c lib/

 ------  EXTENSIONS  ------

 Title:  "BSD Platforms need STRUCT_TM_HASZONE for POSIX"
  From:  Andy Dougherty <>
Msg-ID:  <Pine.SUN.3.96.980512095524.8158C-100000@newton.phys>
 Files:  MANIFEST ext/POSIX/hints/ ext/POSIX/hints/
         ext/POSIX/hints/ ext/POSIX/hints/

 ------  TESTS  ------

 Title:  "Fix constant detection in t/op/ipcsem.t for Digit UNIX"
  From:  Jarkko Hietaniemi <>
Msg-ID:  <>
 Files:  t/op/ipcsem.t

 Title:  "Fix doc bug for system() return value"
  From:  Daniel Grisinger <>
Msg-ID:  <>
 Files:  pod/perlfunc.pod t/op/exec.t

 ------  UTILITIES  ------
 Title:  "Avoid possible constant autoload loop"
  From:  "M.J.T. Guy" <>, Graham Barr <>, Ilya
         Zakharevich <>
Msg-ID:  <>,
 Files:  utils/h2xs.PL

   (applied based on p5p message as
    483d93a08418d963f1cf43997ab37a2ebc55f2ff, this change contains the

p4raw-link: @982 on //depot/maint-5.004/perl: c5ed518aab0e5c6006080a87273e79a1b8e0d48b
p4raw-id: //depot/maint-5.004/perl@984

19 years agoFurther improvements to h2ph.PL
Kurt Starsinic [Tue, 12 May 1998 10:04:10 +0000 (22:04 +1200)] 
Further improvements to h2ph.PL

    Following is a patch for h2ph.PL, against perl5.004_04-m2.  I've
done a decent amount of testing on it, and it works, IMHO, at least
as well as any previous h2ph.

    FYI, it's still not perfect (surprise!).  For example, Solaris
2.5.1's stdio.h has the following line in it:

        #define NULL (__NULL_TYPE 0)

    which maps to:

        eval 'sub NULL () {( &__NULL_TYPE 0);}' unless defined(&NULL);

    which gives the error:

        Number found where operator expected at line 5,
            near "&__NULL_TYPE 0" (Missing operator before  0?)

    But this is typecasting, which is durned near impossible to get
right in the general case.


19 years agoFix constant detection in t/op/ipcsem.t for Digit UNIX
Jarkko Hietaniemi [Tue, 12 May 1998 00:13:01 +0000 (12:13 +1200)] 
Fix constant detection in t/op/ipcsem.t for Digit UNIX

(sent also to perlbug and Tim, not sent to p5p at first because of a typo...)

As I said earlier the look-for-cpp-defines testing in t/op/ipc*.t was
broken, doomed, DOOMED.  For example the #include logic was broken,
twice: (1) something called $mm was the name of the #included file
(2) filehandle F was not local()ized.  Because of this much breakage
in Digital UNIX the S_IRWX[UGO] could not be found because they are
not directly in <sys/stat.h>.

IMNSHO The Right Way would be to create SysV::IPC (or IPC::SysV, whatever)
that contains the right constants, a la Fcntl.  I already took a shot at
this and found that one must sample several systems to garner all the IPC*,
SHM* SEM*, GET*, et alia constants.  If somebody feels like they know enough
of SVIPC (I don't) they can have what I've got scraped together.

However: I pushed the doom a little bit farther.  With this patch
Digital UNIX 4.0D is happy with 04-m2.  Mucho diagnostic output related
to the #include groveling added, they might come in handy when this
rickety house of cards falls down the next time.  When, not if.


19 years agoAvoid possible constant autoload loop
M.J.T. Guy [Sat, 20 Dec 1997 04:19:46 +0000 (16:19 +1200)] 
Avoid possible constant autoload loop

I attempted to install the SNMP-1.7 module, but 'make test' failed.
To find what was happening, I tried to run the particular test directly.
But I made the standard mistake of forgetting the   -Iblib/auto    on
the command line, so I quite rightly got

%perl5.004_04g -Iblib/lib t/session.t
Can't locate loadable object for module SNMP in @INC (@INC contains: blib/lib /home/mjtg/perl5.004_04g/lib /home/mjtg/perl5.004_04g/lib /home/mjtg/perl5.004_04g/lib .) at t/session.t line 12
BEGIN failed--compilation aborted at t/session.t line 12.

But then it went into a loop, which I didn't expect.

This is because

i) has an END {} subroutine, which is (of course) installed
    at compile time.


ii) It incorporates the constant autoloader from XS:

    # This AUTOLOAD is used to 'autoload' constants from the constant()
    # XS function.  If a constant is not found then control is passed
    # to the AUTOLOAD in AutoLoader.
    ($constname = $AUTOLOAD) =~ s/.*:://;
    $val = constant($constname, @_ ? $_[0] : 0);
    if ($! != 0) {
        if ($! =~ /Invalid/) {
            $AutoLoader::AUTOLOAD = $AUTOLOAD;
            goto &AutoLoader::AUTOLOAD;
        else {
            ($pack,$file,$line) = caller;
            die "Your vendor has not defined SNMP macro $constname, used at $file line $line.
    eval "sub $AUTOLOAD { $val }";
    goto &$AUTOLOAD;

So when the compilation fails, the END subroutine is called.   Since the
subroutine _sock_cleanup isn't defined, AUTOLOAD is called.   But since
the subroutine constant isn't defined, we now go into an AUTOLOAD

An obvious fix is to defer establishing the END{} subroutine by putting it
inside an eval ''  -  patch attached.

But this style must be common to very many modules, so it seems worth
considering more general fixes.

a)    Should END{} subroutines be run if compilation fails?
      I suggest that END{} subroutines should not be installed
      immediately on compilation, but should be placed on a deferred
      list, and only moved to the main list on completion of

b)    The XS constant autoloader should check for the particular name
      "constant" and die.    Again patch attached.

      But of course this patch won't be effective, since historical
      copies of the autoloader are bound into every module in the
      known universe.    Why wasn't this made into a separate module
      inherited by XS modules as required, in accordance with standard
      world-saving procedures?

Credited: Graham Barr <>
Credited: Ilya Zakharevich <>


19 years agoAppease picky DEC compiler in POSIX.xs
Dan Sugalski [Fri, 15 May 1998 14:18:52 +0000 (02:18 +1200)] 
Appease picky DEC compiler in POSIX.xs

(Ignore the last patch to POSIX.XS--it was really old. Grabbed the
wrong one from my out box. This is the correct one. It was originally
against 5.004_5x, but it's needed for _05, too)

The latest Dec C (5.7) is amazingly picky, and has come across a few
problems that have probably been lurking for a while. The following
patch fixes things up so it's happy.


19 years fixes for building external library
Dan Sugalski [Fri, 15 May 1998 14:18:52 +0000 (02:18 +1200)] fixes for building external library

(I originally sent this out a while ago (back in january), but it didn't make it into the _05 patchkit. Here it is again)

Okay, folks. Here's a patch for MM_VMS.PM that fixes a bug when building
an extension with an external library. (like, say, SDBM_File or GD) It's not
perfect (will still fail under certain circumstances, but fewer than the
current version, and all currently functional cases still work) but it's good
enough to fix a majority of the cases *and* get SDBM_File to build (whith the
SDBM_File patches needed for VMS, of course)


19 years agoDocument child exit cause a parent sleep to end early
M.J.T. Guy [Sun, 10 May 1998 00:50:58 +0000 (12:50 +1200)] 
Document child exit cause a parent sleep to end early

Damon Atkins <> wrote

    [ example showing sleep() being interrupted by SIGCHLD ]

The documentation isn't as explicit as it should be that sleep() is
terminated by _any_ signal, not just SIGALRM.   Patch below.

Note also that you can use the return value to decide if you have
slept for the full interval, and do an additional sleep() if desired.


19 years ago Title: "comment init_postdump_symbols issues"
Tim Bunce [Fri, 15 May 1998 12:33:26 +0000 (12:33 +0000)] 
 Title:  "comment init_postdump_symbols issues"
  From:  Tim Bunce
 Files:  perl.c

 Title:  "Improve sort docs re SUBNAME"
Msg-ID:  <>
 Files:  pod/perlfunc.pod

p4raw-id: //depot/maint-5.004/perl@982

19 years ago"Add hook to tie %! to external module (not included)"
Graham Barr [Fri, 15 May 1998 11:47:28 +0000 (11:47 +0000)] 
"Add hook to tie %! to external module (not included)"
Msg-ID:  <>
 Files:  gv.c

p4raw-id: //depot/maint-5.004/perl@981

19 years ago"fix C<print "foo ${\()}"> (pp_refgen fumbles when G_SCALAR, no args)"
Gurusamy Sarathy [Thu, 14 May 1998 16:52:19 +0000 (16:52 +0000)] 
"fix C<print "foo ${\()}"> (pp_refgen fumbles when G_SCALAR, no args)"
Msg-ID:  <>
 Files:  pp.c

p4raw-id: //depot/maint-5.004/perl@971

19 years ago"perlbug reformatted"
Dominic Dunlop [Thu, 14 May 1998 16:18:06 +0000 (16:18 +0000)] 
"perlbug reformatted"
Msg-ID:  <>,
 Files:  utils/perlbug.PL

p4raw-id: //depot/maint-5.004/perl@970

19 years ago"Sub declaration cost reduced from ~500 to ~100 bytes"
Ilya Zakharevich [Thu, 14 May 1998 16:00:11 +0000 (16:00 +0000)] 
"Sub declaration cost reduced from ~500 to ~100 bytes"
Msg-ID:  <>
 Files:  gv.h gv.c op.c

p4raw-id: //depot/maint-5.004/perl@965

19 years ago"while($x=<>) no longer warns (implicit defined added)"
Nick Ing-Simmons [Thu, 14 May 1998 15:11:30 +0000 (15:11 +0000)] 
"while($x=<>) no longer warns (implicit defined added)"
Msg-ID:  <>
 Files:  MANIFEST op.c t/op/defins.t

p4raw-id: //depot/maint-5.004/perl@949

19 years ago"Fix PERL_DESTRUCT_LEVEL core dumps"
Gurusamy Sarathy [Thu, 14 May 1998 15:07:06 +0000 (15:07 +0000)] 
"Fix PERL_DESTRUCT_LEVEL core dumps"
Msg-ID:  <>
 Files:  perl.c sv.c t/op/misc.t

p4raw-id: //depot/maint-5.004/perl@946

19 years ago"5.004_04-m2 Cleanup of test failures"
Gurusamy Sarathy [Thu, 14 May 1998 14:59:37 +0000 (14:59 +0000)] 
"5.004_04-m2 Cleanup of test failures"
Msg-ID:  <>
 Files:  t/op/die_exit.t t/op/ipcmsg.t t/op/ipcsem.t t/op/taint.t
         win32/config.bc win32/

p4raw-id: //depot/maint-5.004/perl@944

19 years ago[difference between patch application from Change 913 and Change 922] timinator
Tim Bunce [Mon, 11 May 1998 20:58:58 +0000 (20:58 +0000)] 
[difference between patch application from Change 913 and Change 922]

 ------  DOCUMENTATION  ------

 Title:  "tweak doc for C<do FILENAME>"
  From:  Gurusamy Sarathy <>
Msg-ID:  <>
 Files:  pod/perlfunc.pod

 ------  PORTABILITY - GENERAL  ------

 Title:  "Add Porting/patching.pod document"
  From:  Daniel Grisinger <>
Msg-ID:  <>
 Files:  MANIFEST Porting/patching.pod

 Title:  "Add VMS specifics to Porting/makerel"
  From:  Charles Bailey <>
Msg-ID:  <>,
 Files:  Porting/makerel

p4raw-link: @913 on //depot/maint-5.004/perl: 91b1e15505068510ec71d8e011102933bbe41b37
p4raw-id: //depot/maint-5.004/perl@922

19 years agoAdd VMS specifics to Porting/makerel
Charles Bailey [Fri, 24 Apr 1998 06:57:46 +0000 (18:57 +1200)] 
Add VMS specifics to Porting/makerel

Funny - I had intended to submit a patch against _04 to fix
File::Path::mkpath() which had a nasty problem (especially on VMS).
A closer look at the 04-m1 source revealed that the necessary
change is already in there (thanks!).

I did, however, encounter build troubles on VMS one of which involved
the new save_helem() and save_aelem() in pp.c pp_hot.c not having
prototypes.  I hand applied the proto.h fix from Gurusamy Sarathy in:

and got further along to:

MCR Sys$Disk:[]miniperl.exe "-I[.lib]" ConfigPM.
Create/Directory [.lib.VMS_AXP.5_00404]
%CREATE-I-EXISTS, [.LIB.VMS_AXP.5_00404] already exists
%MMS-F-GWKNOPRN, There are no known sources for the current target [.EXT.DYNALOADER]DYNALOADER.PM.

Unfortunately the .PL-ification of was not accounted for
in the VMS Makefile.  The enclosed patch to vms/descrip.mms fixes that.

I realize that there have been many patches to vms related files recently,
perhaps including vms/descrip.mms.  Unfortunately I have not had the time
to check if this change was already suggested and/or incorporated into
the archive (though I did search the p5p and vmsp archives at for the string '_pl' but saw nothing relevant
to vms).  Apologies to the pumpking for any inconvenience (and
congratulations on the new baby :-).

Do note that the change to PERL_VERSION reflected in this patch
ought to be upped (via C<s/00404/00405/>) before releasing this
as _05.

Peter Prymmer

Single file affected: vms/descrip.mms
Apply with: patch -p0 < this_patch

Credited: Peter Prymmer <>


19 years agohints/ disable semctl(), align with devel version
Dominic Dunlop [Wed, 15 Oct 1997 01:58:03 +0000 (13:58 +1200)] 
hints/ disable semctl(), align with devel version

semctl(.., .., IPC_STATUS, ..) hangs the system on MachTen 4.1.  Here's a
patch to make hints/ assert that semctl() isn't available.  The
patch also brings the maintenance track hints file into line with that in
the development track, which is slightly more up-to-date.

p5p-msgid: v03110701b175fc029eb1@[]

19 years agoFix File::Find::finddepth typo in trial 2 release
Andreas J. Koenig [Tue, 21 Apr 1998 10:02:31 +0000 (22:02 +1200)] 
Fix File::Find::finddepth typo in trial 2 release

Subject: 5.004_04-m2: File::Find::finddepth is gone

It looks just like a typo. I've added a test to findfind.t too.


19 years agoClarify Termios usage in POSIX.pod
Rocco Caputo [Sun, 10 May 1998 03:36:24 +0000 (15:36 +1200)] 
Clarify Termios usage in POSIX.pod

The included patch removes some ambiguity from the POSIX::Termios


19 years agoReduce rm command line length in pod/Makefile
Hugo van der Sanden [Fri, 25 Jul 1997 05:56:14 +0000 (17:56 +1200)] 
Reduce rm command line length in pod/Makefile

Subject: [PATCH] Re: mostly OK: perl 5.00404 +MAINT_TRIAL_2 on sun4-solaris

:This is a success report for perl from,
:generated with the help of perlbug 1.20 running under perl 5.00404.
:Perl reported to build mostly OK on this system: op/ipc* both failed
:under 'make test', but succeeded when run individually. I assume this
:failure relates to the problems noted by Jarkko - I don't have time
:to investigate this right now.

Building the same with DEBUGGING passed all tests (additional configure
option '-Dccflags="-g -DDEBUGGING"').

I also note that 'make clean' in ./pod is producing an 'rm' line
2181 characters long: patch below splits the line into 3. (I assume
the Makefile isn't generated.)


19 years agoDocument integer pragma effect on % operator
Gisle Aas [Mon, 11 May 1998 20:58:58 +0000 (08:58 +1200)] 
Document integer pragma effect on % operator

Jon Orwant <> writes:

> Of course I expect "use integer" to use integers for everything.
> I don't see why that should change the value of -534 % 210.
> Here's what perlmod says:
>    Binary "%" computes the modulus of two numbers.  Given integer operands $a
>    and $b: If $b is positive, then $a % $b is $a minus the largest multiple of
>    $b that is not greater than $a.  If $b is negative, then $a % $b is $a
>    minus the smallest multiple of $b that is not less than $a (i.e. the result
>    will be less than or equal to zero).
> $a is -534.  $b is 210.  The largest multiple of 210 not greater than -534
> is -630.  Ergo, -534 % 210 is -534 - -630, or 96.
> But if you "use integer", you get -114.  Arithmetic Most Foul.

I think it should stay the way it is.  Perhaps we should apply this
documentation patch.


19 years agoRemove dead code from pod2man
M.J.T. Guy [Fri, 8 May 1998 02:01:26 +0000 (14:01 +1200)] 
Remove dead code from pod2man

This fragment of code was left behind when the .IX fix was made to
pod2man.    Since the X<> construct isn't used anywhere in the core pods,
this is currently something of a non-bug.    It also means that this patch
is untested.  :-)


19 years agoImprove docs for warning about code after an exec()
M.J.T. Guy [Sat, 9 May 1998 02:53:49 +0000 (14:53 +1200)] 
Improve docs for warning about code after an exec()

I wrote
> This probably ought to be in   perldoc -f exec.

    ... and here it is.

Credited: Chaim Frenkel <>


19 years agoperlvar.pod buglet E<EVMSERR>
Achim Bohnet [Tue, 3 Feb 1998 02:15:21 +0000 (14:15 +1200)] 
perlvar.pod buglet E<EVMSERR>

Besides the already reported two IPC tests that fail on Digital Unix
make install gave:
  ../pod/pod2man: Unknown escape in paragraph 156 of perlvar.pod: ``E<EVMSERR>''

Jarkko posted a patch for _59 back in Feb (last hunk in



19 years agoincorrect return value for hv_iterinit
Gurusamy Sarathy [Sun, 3 May 1998 02:46:35 +0000 (14:46 +1200)] 
incorrect return value for hv_iterinit

On Sat, 02 May 1998 16:29:22 EDT, "SynaptiCAD, Inc." wrote:
>While doing so and debugging the wrapper we found an error in the
>hv_iterinit function. It doesn't say in the code, but in
>Srinivasan's "Advanced perl Programming" book he indicates that
>the return value is the number of elements placed in the hash table
>(which seems logical). The error is that the routine is returning xhv_fill
>instead of xhv_keys. There is actually a comment on the line that
>is suggesting this line be changed, but it looks like it never was
>made (at leat not in the latest developer update on CPAN).

It's in now.  In one corner of the repository.


19 years agoUpdate MANIFEST for trial 2.
Tim Bunce [Fri, 1 May 1998 22:38:38 +0000 (22:38 +0000)] 
Update MANIFEST for trial 2.
(Porting/Contract lib/Tie/ t/op/tiehandle.t)

p4raw-id: //depot/maint-5.004/perl@913

19 years agoAdd t/op/tiehandle.t as xtext to repository (see change 911)
Tim Bunce [Fri, 1 May 1998 22:30:29 +0000 (22:30 +0000)] 
Add t/op/tiehandle.t as xtext to repository (see change 911)

p4raw-id: //depot/maint-5.004/perl@912

19 years ago Title: "Add ERRSV, ERRHV, DEFSV and SAVE_DEFSV for XS 5.005 compatibility"
Tim Bunce [Fri, 1 May 1998 21:35:03 +0000 (21:35 +0000)] 
 Title:  "Add ERRSV, ERRHV, DEFSV and SAVE_DEFSV for XS 5.005 compatibility"
  From: (Tim Bunce)
Msg-ID:  <>
 Files:  perl.h

  From:  Graham Barr <>
Msg-ID:  <>
 Files:  pod/perltie.pod lib/Tie/ pp_sys.c t/op/tiehandle.t

p4raw-id: //depot/maint-5.004/perl@911

19 years ago[difference between patch application from Change 909 and Change 910]
Tim Bunce [Fri, 1 May 1998 20:47:47 +0000 (20:47 +0000)] 
[difference between patch application from Change 909 and Change 910]

 Title: "Add warning for Illegal hex digit"
 Files:  util.c

   (applied based on p5p patch as
   b4ee34b7d8ab5b92f2ad7436c47c467977ad1238, this is the difference)

p4raw-link: @909 on //depot/maint-5.004/perl@909: 8b3d696ffd11cf2e49f6eaa575b829ab0a55352d
p4raw-id: //depot/maint-5.004/perl@910

19 years agoDocument changed local($a[$i],$b{$j}) behaviour re delete/splice
Charles Bailey [Tue, 25 Nov 1997 01:55:08 +0000 (13:55 +1200)] 
Document changed local($a[$i],$b{$j}) behaviour re delete/splice

Just a quick doc update; I've presumed that given the split discussion
on p5p the original fix will stay around.


19 years agoFix printf segmentation fault
Hugo van der Sanden [Sun, 7 Dec 1997 01:25:20 +0000 (13:25 +1200)] 
Fix printf segmentation fault

At 12:52 pm -0400 28/4/98, Ilya Zakharevich wrote:
>Hugo van der Sanden writes:
>> Using 5.004_05t1, the below gives an assertion failure:
>>   for ($i=0; $i<124; ++$i) {
>>       $data{$i}++;
>>   }
>>   foreach (0 .. 123) {
>>       @x = split(" ",undef);
>>       printf("%s%3d %s%6d\n",$x[0],$x[1],$x[2],$_);
>>   }
>> Run inside gdb with '-w /home/hsanden/t0', I get:
>>   Name "main::data" used only once: possible typo at /home/hsanden/t0 line 2.
>>   Use of uninitialized value at /home/hsanden/t0 line 5.
>>   assertion botched: *(unsigned int *)((caddr_t)Perl_op + Perl_op->ovu.ovu_size + 1 - sizeof (unsigned int)) == 0x55555555
>For those who have never seen it: This is a memory overrun.  Write was
>performed after an end of the malloced area.

Thanks Ilya - I hadn't seen it before.

I understand, I think, why it is happening: the $x[??] arguments to printf
are being compiled to pp_aelemfast, which pushes on the stack without
bounds checking - the second one exactly fills the stack, so the third
writes past the end; the final $_ is pp_gvsv, which does an EXTEND(sp, 1),
which grows the stack, copying all that it knows about, but leaving a
gap for the past-the-end value - this causes the SEGV when the overwrite
hasn't been trapped by the assertion.

I'm not sure whether AELEMFAST is supposed to EXTEND - if it is, the patch
below will suffice. If not, then presumably room on the stack is supposed
to be guaranteed at the time of generation of the op, which is in
op.c:peep() case OP_GV: I can't see there any attempt to check expected
stack depth.

I can certainly see the value of optimising the printf to something along
the lines of:

.. but I suspect that isn't what 'FAST' is supposed to mean.

Patch is to 5.004_04, and passes all tests (and the above failure case)
here; it might be worth adding the failure case to op/misc.t if it is
at least reasonably likely to fail in the same place in the future - if
so, only the last four lines should be required.

p5p-msgid: l03130300b16bebdbc314@[]

19 years agoperl_call_method() bug fix (corrupt op pointer)
Eugene Alterman [Tue, 24 Mar 1998 02:41:06 +0000 (14:41 +1200)] 
perl_call_method() bug fix (corrupt op pointer)

[this patch] fixes a bug in perl_call_method().
If "op" was null before a call and then it was set to point to a local
variable "myop" it mast be restored back to null.


19 years agoAdd warning for Illegal hex digit
Stephen P Potter [Mon, 13 Oct 1997 20:07:41 +0000 (08:07 +1200)] 
Add warning for Illegal hex digit

Ok, here's a real patch for the hex warning from earlier.

Credited: Stephen Potter <>
Credited: Tim Bunce <>


19 years ago"Change Ilya's do_binmode to K&R prototype and move to doio.c"
Tim Bunce [Fri, 1 May 1998 19:44:47 +0000 (19:44 +0000)] 
"Change Ilya's do_binmode to K&R prototype and move to doio.c"
 Files:  doio.c util.c

p4raw-id: //depot/maint-5.004/perl@909

19 years agoFix File::Basename to not untaint results (using new //t flag)
Eric Hammond [Fri, 1 May 1998 17:50:46 +0000 (17:50 +0000)] 
Fix File::Basename to not untaint results (using new //t flag)

Credited: Tom Phoenix <>

p4raw-id: //depot/maint-5.004/perl@907

19 years agoRuntime Carp verbosity without aliasing
Tim Bunce [Tue, 21 Apr 1998 22:48:07 +0000 (10:48 +1200)] 
Runtime Carp verbosity without aliasing

[as previous commit 7670b0aa522aabb98eb031aad22c217b308ccecb, but as

19 years agoRuntime Carp verbosity without aliasing
Joshua Pritikin [Tue, 21 Apr 1998 22:48:07 +0000 (10:48 +1200)] 
Runtime Carp verbosity without aliasing

Subject: Carp verbosity

Speaking of Carp, how about this small change?

p5p-msgid: H00000e50003936c@MHS

19 years ago[core language changes]
Spider Boardman [Tue, 28 Apr 1998 11:04:49 +0000 (11:04 +0000)] 
[core language changes]

 Title:  "5.004_04m5t1: Fix dangling references in LVs", "Fix dangling
         references in LVs"
Msg-ID:  <199804010541.AAA32615@Orb.Nashua.NH.US>,
 Files:  embed.h keywords.h opcode.h perl.h proto.h doop.c global.sym mg.c
         pp.c sv.c

 Title:  "Fix SvGMAGIC typo in change 904"
 Files:  doop.c

p4raw-id: //depot/maint-5.004/perl@906

19 years ago[difference between patch application from Change 904 and Change 905]
Tim Bunce [Tue, 28 Apr 1998 10:32:20 +0000 (10:32 +0000)] 
[difference between patch application from Change 904 and Change 905]

seems like a test accounting disagreement with

p4raw-link: @904 on //depot/maint-5.004/perl: 0af7994b889ad0dfcacb011f16f9e3c77a9292b9
p4raw-id: //depot/maint-5.004/perl@905

19 years agoAllow but ignore embedded /...(?o).../ in regexp
Hugo van der Sanden [Mon, 2 Mar 1998 21:46:07 +0000 (09:46 +1200)] 
Allow but ignore embedded /...(?o).../ in regexp

Subject: [PATCH] Re: Regex weirdness

:    I found some true strangeness in 5.004_04 which doesn't occur in
:5.004_64.  I didn't find any patches which obviously meant to fix it,
:so just in case:
:        $string = "aa bb cc";
:        foreach ('aa', 'bb', '(?o)aa', 'bb', 'aa', '(?o)aa') {
:            if ($string =~ /($_)/) { print "yes:  $_\n" }
:            else                   { print "no:   $_\n" }
:        }
:    produces, in 5.004_04:
:        yes:  aa
:        yes:  bb
:        yes:  (?o)aa
:        no:   bb
:        yes:  aa
:        yes:  (?o)aa
:    but in 5.004_64, it does the right thing (given that the right
:thing is to ignore (?o) directives)

Patch below makes 5.004_05t1 do that.

:    Can somebody say for sure that the root problem has been
:addressed, or shall I look for more subtle examples?

Depends which root problem - the patch below fixes the problem of
'5.004 doesn't ignore (?o)' (though perhaps it should be ignoring
(?g) as well?). The devel branch solution is rather different since
(as I understand it) it can attach flags to a particular subexpression
of the regexp, so that I believe this:

  /($_)(?:(?o)($_))/ foreach qw( a b );

will match "aa" the first time and "ba" the second. I guess the
'root cause' of the difference between the _05t1 and the _64
behaviour is that the devel branch rightly accepts patches that
the maint branch rightly refuses, and regexps represent an area
of major change in that respect.

[Later] Nope, I was wrong: the above code matches "aa" and "bb" in
5.004_64. I guess that because /o wasn't set on the top level, it
has already thrown away the old compiled regexp before it might
have got as far as seeing /o on the subexpression.

[Even later]
There seems to be an additional oddity with the 5.004_05t1 status
quo, since this:

  foreach $a (qw(a b)) { foreach $b (qw(a b)) {
    printf "$a$a =~ $b$b: %s\n", (("$a$a" =~ /$b((?o)$b)/) ? 'yes' : 'no');

prints this:

  aa =~ aa: yes
  aa =~ bb: aa
  bb =~ aa: bb
  bb =~ bb: bb

.. so looking for more subtle examples might still be fruitful. With the
below patch the above code prints the same results as 5.004_64, matching


19 years agoDon't accidentally untaint target of s///
Chip Salzenberg [Tue, 28 Apr 1998 22:32:20 +0000 (10:32 +1200)] 
Don't accidentally untaint target of s///

Good news and bad news.

Good news: This patch seems to fix the bug.

Bad news:  I can't get a test into taint.t that reliably fails
           under 5.004_04.  My only good test is a small program:
            $ perl -T -e 'my $x = $^X; $x =~ s/e/e/; join("",$x), kill 0'
           Something reliable and appropriate for taint.t would
           be greatly appreciated.

p5p-msgid: 19980310151756.24767@cyprus

19 years agoNew regex flag //t to leave $1 etc. tainted
Chip Salzenberg [Tue, 28 Apr 1998 22:32:20 +0000 (10:32 +1200)] 
New regex flag //t to leave $1 etc. tainted

This patch adds the Tim-originated //t flag to leave $1 etc. tainted.
This should be forward-ported to the development track (_6*); I'm not
set up for that right now, so maybe someone else could do it.  It'll
be easier if you apply my other recent taint-related patches first.

(This patch was drop-dead easy; the hardest part was finding another
flag bit for PMOPs.)

Credited: Tim Bunce <>

p5p-msgid: 19980310192640.37826@cyprus

19 years ago[difference between patch application from Change 897 and Change 904]
Tim Bunce [Mon, 27 Apr 1998 20:20:21 +0000 (20:20 +0000)] 
[difference between patch application from Change 897 and Change 904]

 ------  CORE LANGUAGE  ------

 Title:  "Protect join() against double reads on undef and SvGMAGICALs"
  From:  Chip Salzenberg <>, Tim Bunce
Msg-ID:  <>
 Files:  doop.c

 Title:  "fixes for various noises under PERL_DESTRUCT_LEVEL"
  From:  Gurusamy Sarathy <>
Msg-ID:  <>
 Files:  perl.c

 Title:  "Fix nice_chunk memory leak"
  From:  Gurusamy Sarathy <>
Msg-ID:  <>
 Files:  sv.c

 ------  DOCUMENTATION  ------

 Title:  "perlcall is Perl from C, not C from Perl"
  From:  Steve A Fink <>
 Files:  pod/perlembed.pod

 Title:  "(repost) new text for perlsec", "new text for perlsec"
  From:  Tom Phoenix <>
Msg-ID:  <>
 Files:  pod/perlsec.pod

 ------  EXTENSIONS  ------

 Title:  "NDBM_File man page needs Fcntl"
  From:  "Danny R. Faught" <>
Msg-ID:  <>
 Files:  ext/NDBM_File/

 ------  LIBRARY  ------

 Title:  "Documentation discrepancy: pragmatic modules"
  From:  "M.J.T. Guy" <>, (Hugo van der Sanden)
Msg-ID:  <>,
 Files:  lib/ lib/ lib/

 ------  PORTABILITY - GENERAL  ------

 Title:  "Updated hints file for svr4"
  From:  Andy Dougherty <>
Msg-ID:  <Pine.SUN.3.96.980423110522.26621A-100000@newton.phys>
 Files:  hints/

 Title:  "Pumpkin update -- shared location"
  From:  Andy Dougherty <>
Msg-ID:  <Pine.SUN.3.96.980424115837.6222A-100000@newton.phys>
 Files:  Porting/pumpkin.pod

 ------  UTILITIES  ------

 Title:  "Major update to h2ph.PL"
  From:  Billy <>
Msg-ID:  <>
 Files:  utils/h2ph.PL

p4raw-link: @897 on //depot/maint-5.004/perl: f06f9b6fc5a686f0169ee2a91b32d5e7125a44ae
p4raw-id: //depot/maint-5.004/perl@904

19 years agoDynaloader build on VMS
Peter Prymmer [Fri, 24 Apr 1998 06:57:46 +0000 (18:57 +1200)] 
Dynaloader build on VMS

Funny - I had intended to submit a patch against _04 to fix
File::Path::mkpath() which had a nasty problem (especially on VMS).
A closer look at the 04-m1 source revealed that the necessary
change is already in there (thanks!).

I did, however, encounter build troubles on VMS one of which involved
the new save_helem() and save_aelem() in pp.c pp_hot.c not having
prototypes.  I hand applied the proto.h fix from Gurusamy Sarathy in:

and got further along to:

MCR Sys$Disk:[]miniperl.exe "-I[.lib]" ConfigPM.
Create/Directory [.lib.VMS_AXP.5_00404]
%CREATE-I-EXISTS, [.LIB.VMS_AXP.5_00404] already exists
%MMS-F-GWKNOPRN, There are no known sources for the current target [.EXT.DYNALOADER]DYNALOADER.PM.

Unfortunately the .PL-ification of was not accounted for
in the VMS Makefile.  The enclosed patch to vms/descrip.mms fixes that.

I realize that there have been many patches to vms related files recently,
perhaps including vms/descrip.mms.  Unfortunately I have not had the time
to check if this change was already suggested and/or incorporated into
the archive (though I did search the p5p and vmsp archives at for the string '_pl' but saw nothing relevant
to vms).  Apologies to the pumpking for any inconvenience (and
congratulations on the new baby :-).

Credited: Tim Bunce <>


19 years agoperl compile fix for AIX 4.3
Jens-Uwe Mager [Sun, 26 Apr 1998 05:55:47 +0000 (17:55 +1200)] 
perl compile fix for AIX 4.3

Perl does not compile under AIX 4.3 due to two problems. First,
in an attempt to make the DNS resolver thread safe h_errno is
not a simple variable any more, it is a define. This causes the
definition in pp_sys.c to fail. Second the XCOFF header files
remove some useful definitions that the dynamic loader in dl_aix.xs
did rely upon. The following is a patch that fixes both problems.


19 years agoIO::Socket->socketpair broken (typo)
Olaf Titz [Mon, 20 Apr 1998 22:21:10 +0000 (10:21 +1200)] 
IO::Socket->socketpair broken (typo)

An obvious typo makes IO::Socket->socketpair() return bogus results.
Here's the patch:


19 years agoClarify require "Foo::Bar" non-bareword issue
Dominique Dumont [Thu, 23 Apr 1998 05:12:02 +0000 (17:12 +1200)] 
Clarify require "Foo::Bar" non-bareword issue

Subject: require doc problem patch

Since I was red with shame because I didn't eyeball the FM enough to
spot the "bareword" part with the require function, I'm providing a patch
to the perlfunc man to clarify this problem that
was discussed heavily on perl5porters list.

Here we go :


19 years agoperl.c fixes for -DUNEXEC
Matt Wette [Wed, 15 Oct 1997 00:44:53 +0000 (12:44 +1200)] 
perl.c fixes for -DUNEXEC

I have sucessfully snagged unexelf.c from GNU emacs-20.2 and included it
w/ perl and -DUNEXEC to get "perl -u" to work.  I'm a happy camper.

Included are the fixes required.


19 years ago-2.0 vs. -2 (was Number representations)
Chip Salzenberg [Tue, 28 Apr 1998 08:20:21 +0000 (20:20 +1200)] 
-2.0 vs. -2 (was Number representations)

According to Ilya Zakharevich:
> Tuomas Lukka writes:
> > Still, the fact that the differenct between {-2 and -2.0} and
> > {2 and 2.0} is not the same is disconcerting...
> Much more, it is a bug.  The feature that *constants* 2 and 2.0 mean
> different things in Perl was added by Larry per my request, to make
> Math::PARI possible.  Now Math::PDI (sp?) uses this too.

Under the assumption that Larry really does want them different, this
patch should serve:

Credited: Chip Salzenberg <>

p5p-msgid: 19980309185652.11231@cyprus

19 years agoBetter error message for require failure
Ed Peschko [Thu, 23 Apr 1998 06:43:00 +0000 (18:43 +1200)] 
Better error message for require failure

*sigh* try three. Incorporates the suggestion by Sarathy to drop the 'the' in
'locate the file', and correct a braindead mis-syncronization error in the last

Never has there been so much grief over two words of plain text...


19 years ago[difference between patch application from Change 896 and Change 897]
Tim Bunce [Wed, 22 Apr 1998 23:49:24 +0000 (23:49 +0000)] 
[difference between patch application from Change 896 and Change 897]

 ------  CORE LANGUAGE  ------

 Title:  "fix for "Unbalanced string table refcount""
  From:  Gurusamy Sarathy <>
Msg-ID:  <>
 Files:  sv.c

   (applied based on p5p message as 45b0f2da05a0069bf1df601ff96ee525f651b435)

 Title:  "Add fourth arg to substr: substr EXPR,OFFSET,LEN,REPLACEMENT"
  From:  Gisle Aas <>
Msg-ID:  <>
 Files:  pod/perlfunc.pod Todo pp.c t/op/substr.t

 Title:  "Odd number of elements in hash list."
  From:  Tom Phoenix <>
Msg-ID:  <>
 Files:  MANIFEST pod/perldiag.pod pp.c pp_hot.c t/op/hashwarn.t

   (applied based on p5p message as 4e6dd09136b96d3e6f8fc8cf5af2dc3e32c65eec)

 Title:  "bidirectional pipe warning blues"
  From: (Paul Marquess)
Msg-ID:  <>
 Files:  doio.c

   (applied based on p5p message as 610d1f920220f1a98002175088e769d3d561e68a)

 Title:  "warning for: bless $foo, """
Msg-ID:  <H00000e5000378a0@MHS>
 Files:  pod/perldiag.pod pp.c

 ------  DOCUMENTATION  ------

 Title:  "long list of man page nitpicks"
  From:  Greg Bacon <>, Tom Christiansen
Msg-ID:  <>,
 Files:  pod/perlapio.pod pod/perlcall.pod pod/perldebug.pod pod/perldelta.pod
         pod/perldiag.pod pod/perlembed.pod pod/perlfaq2.pod
         pod/perlfaq3.pod pod/perlfaq4.pod pod/perlfaq5.pod
         pod/perlfaq7.pod pod/perlfaq8.pod pod/perlform.pod
         pod/perlfunc.pod pod/perlguts.pod pod/perlipc.pod
         pod/perllocale.pod pod/perlmodlib.pod pod/perlop.pod
         pod/perlre.pod pod/perlref.pod pod/perlrun.pod
         pod/perlstyle.pod pod/perlsub.pod pod/perlsyn.pod
         pod/perltoot.pod pod/perlvar.pod pod/perlxs.pod

   [one change was applied as

 Title:  "document that system() does not set $! when it fails"
  From:  "Mark R. Levinson" <>
Msg-ID:  <>
 Files:  pod/perlfunc.pod

 Title:  "Fix pod/roffitall execute permission"
Msg-ID:  <1997Nov17.132031.2589892@cor.newman>
 Files:  pod/roffitall

 Title:  "document when split ignores trailing empty fields"
  From:  Hugo van der Sanden <>
Msg-ID:  <l03130300b14fac832b77@[]>
 Files:  pod/perlfunc.pod

 ------  EXTENSIONS  ------

 Title:  "Buglet in documentation"
  From:  Horst von Brand <>
Msg-ID:  <>
 Files:  ext/Opcode/

   (applied based on p5p message as eff8350db965b7b9ea400107c5d354b9651e0a46)

 Title:  "Failure to append to perllocal.pod should not be fatal"
  From: (Andreas J. Koenig)
Msg-ID:  <>
 Files:  lib/ExtUtils/

 ------  PORTABILITY - GENERAL  ------

 Title:  "Add Social Contract (2nd Draft) as Porting/Contract"
  From:  Russ Allbery <>
Msg-ID:  <m3btw66n8i.fsf@windlord.Stanford.EDU>
 Files:  Porting/Contract

 Title:  "VMS patches to 5.004_03"
  From:  Charles Bailey <>
Msg-ID:  <>
 Files:  vms/vms.c

 Title:  "hints/ - enable vfork"
  From:  Andy Dougherty <>
Msg-ID:  <Pine.SUN.3.96.980417110749.19327B-100000@newton.phys>
 Files:  hints/

p4raw-link: @896 on //depot/maint-5.004/perl: 0562b9ae2b0eff79632fc0164c13c34c06a019e2
p4raw-id: //depot/maint-5.004/perl@897

19 years agosupport find2perl -follow
Billy [Tue, 7 Apr 1998 10:47:23 +0000 (22:47 +1200)] 
support find2perl -follow

it's been tried before by better people than i, i'm sure, but here's a
patch for find2perl (well, find2perl.PL) that implements the -follow
option; i tested it very *very* trivially, and it seemed to work (it gave
the same output as "find -follow" anyway)...

how it works:

we have a hash (%already_seen) which stores which files we've seen (it
uses "$dev,$ino" as the hash key - that's unique for each file, i figure),
but only records it in the hash if the file we're looking at isn't a
directory (that what find seems to do)... also, all lstat() calls become
stat() calls with -follow... no doubt the special case "-follow -type l"
should be considered, but i didn't think of it at the time... anyway,


19 years agoConfig: Irix 5 hints
Kurt Starsinic [Sun, 5 Apr 1998 23:48:33 +0000 (11:48 +1200)] 
Config: Irix 5 hints

cc under Irix 5 needs a bigger kick in the pants to optimize toke.c:


19 years agowin32 tweaks (signals and crypt support)
Gurusamy Sarathy [Thu, 16 Apr 1998 12:55:48 +0000 (00:55 +1200)] 
win32 tweaks (signals and crypt support)

This clears up a couple of problems in trial1:
   - reinstates common signals to avoid noises from libraries
   - build support for enabling crypt() was busted


19 years agoptags broken
Ilya Zakharevich [Mon, 24 Nov 1997 18:22:40 +0000 (06:22 +1200)] 
ptags broken

Note that whoever changed the style of declaration of global variables
did not fix emacs/ptags.

Patch follows,


19 years agoormaments method in Term/ causes warning with string arg.
Hiroo Hayashi [Mon, 6 Apr 1998 11:39:43 +0000 (23:39 +1200)] 
ormaments method in Term/ causes warning with string arg.


19 years agolib/Pod/
Daniel S. Lewart [Thu, 31 Jul 1997 04:01:00 +0000 (16:01 +1200)] 

Perl5 Porters,

The lib/Pod/ patch below reduces weblint errors and warnings of
pod2html output by an order of magnitude.  Some highlights (by line):
  16     use Config for $Config{perladmin} later
  20     s/Pod::HTML/Pod::Html/
  24     s/Pod::HTML/Pod::Html/
 305     $title =~ s/\s+$//
 319-21  Remove parenthetical clause from $title
 331     Add <LINK REV="made" HREF="mailto:$Config{perladmin}"> to head
 374     s/\s+$// from =head[1-6] heading
 376     s/\s+$// from =item text
 397     Move <P> before $text
 786     Escape ["&<>] in $title
 860     Escape ["&<>] in $convert
 903-13  Fix <UL> bullet lists
 922-32  Fix <OL> numbered lists
 941-51  Fix <DL> definition lists
1126     Fix $rest == 0 (q.v. perlembed.pod C<0>, perllocale.pod I<0>)
1284-87  Convert e-mail addresses beautifully (q.v. perltoc CREDITS)
1289     Escape " in $word too
1292     Escape " in $word too
1436     Escape ["&<>] in $str
1506     Avoid trailing </DL>

Also, I think the stanza at lines 1288-90:
} elsif ($word !~ /[a-z]/ && $word =~ /[A-Z]/) {  # all uppercase?
    $word = html_escape($word) if $word =~ /["&<>]/;
    $word = "\n<FONT SIZE=-1>$word</FONT>" if $netscape;
should be changed for the following reasons:
1) It shrinks one-letter words (e.g. A and I)
2) It is English-specific (Merkin hegemony!)
3) It introduces Netscape-specific HTML


19 years fix
Charles Bailey [Tue, 25 Nov 1997 01:52:47 +0000 (13:52 +1200)] fix

This patch came from one of the VMSPerlers, and seems generally


19 years agoComments added to
Andy Wardley [Thu, 9 Apr 1998 04:10:06 +0000 (16:10 +1200)] 
Comments added to

I've added a bunch of comments to, partly in an effort to
better help me understand what's going on and also in response to a
question for such an annotated on c.l.p.misc.

No changes to the code or user documentation have been made which
makes it a pretty boring patch really.  Here it is all the same.

Credited: Chip Salzenberg <>
Credited: Tom Christiansen <>

p5p-msgid: 980409182357.ZM21638@bandanna

19 years add run-for-some-time mode
Jarkko Hietaniemi [Fri, 3 Apr 1998 05:01:22 +0000 (17:01 +1200)] add run-for-some-time mode

Release III.


19 years agoglibc2.0.6 missing MSG_* <sys/socket.h> defines.
Andy Dougherty [Sun, 5 Apr 1998 23:27:22 +0000 (11:27 +1200)] 
glibc2.0.6 missing MSG_* <sys/socket.h> defines.

This is a patch suitable for the maintenance track; a similar patch
is already in 5.004_64, but that version relies on a config.h variable
HAS_GNULIBC that is not available in 5.004_04.  This version uses
__GLIBC__, which ought to be perfectly fine.

In glibc2.0.6 systems, the various MSG_* #defines in <sys/socket.h>
are no longer #defines.  Instead, they are enums.
I have received confirmation (bug libc/545) that they will again be
#defined in 2.0.7, but I suspect that we ought to expect to
encounter 2.0.6 and the various 2.0.7-prereleases for quite a while.

p5p-msgid: Pine.SUN.3.96.980406113950.3166L-100000@newton.phys

19 years agoInstall extensions with bootstrap (again) in $archlib
Achim Bohnet [Mon, 6 Apr 1998 00:08:35 +0000 (12:08 +1200)] 
Install extensions with bootstrap (again) in $archlib

Fixes the problem I've reported in

Now files in blib/lib gets (again) installed into the architecture depended
library tree if there are files in blib/arch.

I've tested the patch with 5.004_64 on Digital Unix.  Patch should also
be okay for 5.004_05mt1 (no build out of the box here so I just has a look
at ExtUtils/ source).

Credited: Andreas J. Koenig <>


19 years agoDocument that does not load IO::Select etc
Graham Barr [Sun, 19 Apr 1998 20:07:01 +0000 (08:07 +1200)] 
Document that does not load IO::Select etc

This is the change I have put in the IO distribution.


19 years agoBuglet in documentation
Horst von Brand [Mon, 24 Nov 1997 22:49:08 +0000 (10:49 +1200)] 
Buglet in documentation

Patch tells all:


19 years agolong list of man page nitpicks
Greg Bacon [Fri, 6 Jun 1997 05:55:19 +0000 (17:55 +1200)] 
long list of man page nitpicks

In message <>,
    Tim Bunce writes:
: I'd be very grateful if someone could convert this into a patch (diff)
: file that I could apply to the docs.

I know Tom keeps the perlfaq stuff under his own revision control, so
I've done the perlfaq patch separately.

I didn't address trigraphish comments or breaking on dashes.

Credited: Tom Christiansen <>


19 years agofix-up of previous perlre.pod patch
Ted Ashton [Mon, 22 Dec 1997 23:15:23 +0000 (11:15 +1200)] 
fix-up of previous perlre.pod patch

Thus it was written in the epistle of Hugo van der Sanden,
> Subject:     Re: [PATCH] perlre.pod
> Sent:        3/3/98 1:14 am
> To:          Ted Ashton,
> >+use this for lookbehind.  If you are looking for a "bar" which isn't
> preceeded
> >+"foo", C</(?!foo)bar/> will not do what you want.  That's because
> s/preceeded/preceded/
> s/"foo"/by a "foo"/
> Hugo

Ah, quite true.  Here's another with the above fixed and with the paragraph
split into two.


19 years agoMention SWIG in perlxs.pod
Steve A Fink [Wed, 8 Apr 1998 04:11:44 +0000 (16:11 +1200)] 
Mention SWIG in perlxs.pod

Subject: Embedding perl, was Re: RULING: while ($x = <>)

On Wed, 8 Apr 1998 wrote:

> 1.  Embedding perl usefully is very hard.  As documented in Gisle's
> web page, the internal data structures are arcane and have many subtle
> special cases -- and you have to know a large quantity of them in order
> to do even minor gluing.  As a result, the barrier to entry is steep.

What he said.

This isn't a comprehensive solution, but from I've seen of SWIG, it seems
to be extremely useful for at least the minor glue cases. Perhaps the
perlembed and/or perlxs pods should point to SWIG?

A doc patch to mention SWIG is included below. (Note that I have far too
little real experience with using SWIG to know how appropriate this is.
It's just worked, and worked well, for everything that I wanted so far.)

In the best of worlds, both the perl core implementation and XS would be
cleaned and simplified. Not easy tasks.

p5p-msgid: Pine.HPP.3.96.980408154956.20990K-100000@brooksie.CS.Berkeley.EDU

19 years agounimplemented umask() should return undef not die
Kurt D. Starsinic [Wed, 11 Mar 1998 08:01:10 +0000 (20:01 +1200)] 
unimplemented umask() should return undef not die

Subject: [PATCH] umask() does not match Camel

umask() behavior is not consistent with the Camel; see, e.g., symlink()'s
documentation, which suggest nesting the call in an eval { }.  This patch
(against 5.004_62) corrects the discrepancy, won't break one-liners, and
clarifies the mud somewhat:


19 years agostale pointers after realloc (MEXTEND in pp_print and pp_prtf)
Malcolm Beattie [Wed, 22 Apr 1998 23:49:24 +0000 (23:49 +0000)] 
stale pointers after realloc (MEXTEND in pp_print and pp_prtf)

Gurusamy Sarathy writes:
> The compiler builds (after a few changes to the Makefile).
> At some point xsubpp dumped core while generating
> Makefile from Makefile.PL.  It would seem there is a bug to be
> fixed in perl.  (I temporarily got around this by changing
> C<print @InitFileCode> to C<print join "", @InitFileCode>
> in xsubpp.)

[cc'ed to perl5-porters]

I ran across exactly that symptom in December. It turned out to be a
very hard-to-find bug which I fixed in:

    Change 361 on 1997/12/12 by mbeattie@localhost

    pp_print and pp_prtf handling of tied file handles used EXTEND
    instead of MEXTEND leading to core dumps. This fix needs
    propagating back to the maintenance branch.

After fixing it, I did a check to see if anything else was doing an
extend and then using a cached MARK but didn't see anything. Are you
sure the latest perl still causes the problem?

p4raw-link: @361 on //depot/perl: 0da8b9e680048dc3905038cf517a053580d0b299

19 years agobidirectional pipe warning blues
Paul Marquess [Wed, 8 Apr 1998 09:31:35 +0000 (21:31 +1200)] 
bidirectional pipe warning blues

When Perl detects the use of a bidirectional pipe it will warn about it
(if warnings are enabled) and silently turn it into a writeable pipe.

For example once perl is finished with this bit of code

    open (F, "| true |") ;

it will actually send "true |" to the shell for execution.

On my SunOS box this isn't a problem. Unfortunately Linux which uses
bash is another story.  It spits out this warning

    sh: -c: line 2: syntax error: unexpected end of file

Here is a patch to shut up the warning by zapping the terminating "|".


19 years agoanother destruct_level fix
Gurusamy Sarathy [Wed, 22 Apr 1998 23:49:24 +0000 (23:49 +0000)] 
another destruct_level fix

On Mon, 30 Mar 1998 23:47:55 +0200, Jan-Pieter Cornet wrote:
>Another fix to prevent coredumps when running with an increased
>I believe that this fixes a typo or thinko of the original coder.

That's not accurate, I'm afraid.

>                                                                 Could the
>guilty party please stand up and confess in shame, or, in case I'm wrong,
>flame me for ruining their artistically crafted code and present the
>proper fix while doing so?

The HeVAL() slot of the string table contains a reference count (which
is not an IV for efficiency reasons).  The right value to signify a
reference count of zero is Nullsv, not &sv_undef.

At the time that code was written, hv_free_ent() didn't expect
HeVAL(entry) to contain a valid SV.  Someone changed that assumption.

>                          (I know that HeVAL of a HE in the strtab shouldn't
>contain an SV*, but hv_free_ent can't stand non-SV* values there, and
>I didn't know a better fix. This probably leaks hek_key[]s, but then again,
>that's the whole purpose of this code, to detect those leaks).

The "right" fix is to patch hv_free_ent() with:


19 years agoOdd number of elements in hash list.
Tom Phoenix [Sun, 2 Nov 1997 18:21:19 +0000 (06:21 +1200)] 
Odd number of elements in hash list.

On Thu, 26 Mar 1998, Ed Jordan wrote:

> Perl should probably give a more specific warning where a hash is
> initialised with a single element which is a hash-ref,

Okay. :-)

This patch changes the text of the warning given when warnings are on and
a hash is initialized with a single element which is either a hashref or
arrayref, typically like this.

    %hash = { qw/ I used curlies instead of parens / };
    %hash = [ qw/ This mistake is somewhat less common / ];

(At the same time, I've exorcized the oxymoron "hash list" from the

It should be okay to add to the _05 release, since it's not a _new_
warning, just a change in the text of the existing one.


19 years agoAllow more lenient switch processing
John L. Allen [Wed, 18 Mar 1998 23:26:46 +0000 (11:26 +1200)] 
Allow more lenient switch processing

This patch fixes two things:

1. scripts beginning with #! that mention perl on the first line
   and have a -i flag stop reading flags after the -i.  So,
#!   perl -iorig -nl
   won't see the -nl

2. On AIX (shudder), scripts that start like #!/bin/perl -l -n -s
   and are executed directly die with
Unrecognized switch: - -n -s  (-h will show valid options).
   This is because on AIX, what gets run is
/bin/perl '-l -n -s' <script_name>

   I don't think it does any harm to allow args like '-l -n -s', with
   single blanks between flags to be valid, since presently they
   aren't.  Two blanks between switches ends switch processing.
   But perhaps it shouldn't.  Another thing that really bothers me
   is the double switch processing that goes on with #! lines: first
   when argv is scanned and again when the #! line is scanned.  It
   really shouldn't happen, and can cause unexpected results.  Toke.c
   should probably skip over the first part of the #! line that
   exactly matches argv[1].  I think that was Chip's idea from a
   while back.

The patch does _not_ fix the error msg that results from

#!/bin/perl -z

Can't emulate -z on #! line at /tmp/t line 1.

This msg should be "Invalid option -z on #! line ...", but I presume
other valid options can't be emulated on the #! line, hence this msg.
I'm a bit confused by the split option handling duties shared by the
reswitch code and the moreswitches sub in perl.c, so I'm not sure what
the right thing to do is.  It looks like moreswitches is mainly for
#! line flag processing, but does double duty for argv switch processing.
I considered making moreswitches take an additional arg that tells it
whether it's doing argv or #! processing, but became lazy: but in a
bad way :)

[ This morass of switch processing code should be rewritten, IMOSVHO.
  And much better commented. ]


19 years agofix for "Unbalanced string table refcount"
Gurusamy Sarathy [Sat, 4 Apr 1998 05:43:48 +0000 (17:43 +1200)] 
fix for "Unbalanced string table refcount"

There was a hole in the refcounting of GvSTASH(), illustrated by
this testcase (run under PERL_DESTRUCT_LEVEL=1):

   $bar = *a; $foo = *bar; $bar = *foo; $bar = ""; $foo = "";

defstash is never destroyed as a result of this, and the
the string-table remains populated till the very end.

Now the testsuite should run clean under PERL_DESTRUCT_LEVEL
except for the two "Scalars leaked" messages.


19 years ago[inseperable changes between Change 887 and Change 896]
Tim Bunce [Wed, 22 Apr 1998 11:49:24 +0000 (11:49 +0000)] 
[inseperable changes between Change 887 and Change 896]

 Assorted patches:

 ------  CORE LANGUAGE  ------

 Title:  "Fix semctl for Linux, Sun and SVR4"
  From:  Graham Barr <>, (Larry W. Virden, x2487)
Msg-ID:  <>, <>
 Files:  doio.c

 Title:  "C<dSP> entails using C<SP>, not C<sp>"
  From:  Gurusamy Sarathy <>
Msg-ID:  <>
 Files:  pod/perlcall.pod pod/perlembed.pod pod/perlguts.pod pod/perlxs.pod
         doio.c doop.c ext/DB_File/DB_File.xs
         ext/DynaLoader/dl_dld.xs ext/Opcode/Opcode.xs
         ext/POSIX/POSIX.xs ext/Socket/Socket.xs gv.c
         lib/ExtUtils/typemap mg.c os2/OS2/REXX/REXX.xs

 Title:  "Misleading error on close of unopened handle"
  From:  "M.J.T. Guy" <>
Msg-ID:  <>
 Files:  doio.c

 Title:  "h_errno might not be an int"
  From:  Andy Dougherty <>
Msg-ID:  <Pine.SUN.3.96.980325165059.22255D-100000@newton.phys>
 Files:  pp_sys.c

 Title:  "SEGV compiling localised lexical in perl5.004_05t1"
  From:  Gurusamy Sarathy <>, (Hugo
         van der Sanden)
Msg-ID:  <>,
 Files:  op.c t/op/misc.t


 Title:  " abs_path() and fast_abs_path() plus code merge"
  From:  Graham Barr <>
Msg-ID:  <>
 Files:  lib/

 Title:  "efficient version of"
  From: (Andreas J. Koenig)
Msg-ID:  <>
 Files:  lib/

 Title:  "Socket occasional SEGV in pack_sockaddr_un"
  From:  Trevor Blackwell <>
Msg-ID:  <>
 Files:  ext/Socket/Socket.xs

p4raw-link: @887 on //depot/maint-5.004/perl: 6cdf74fe31f049dc2164dbb9e6242179d4b8ee1f
p4raw-id: //depot/maint-5.004/perl@896

19 years agoFix bug in locale.t
Jarkko Hietaniemi [Sun, 4 Jan 1998 10:41:28 +0000 (22:41 +1200)] 
Fix bug in locale.t

I am oh _so_ ashamed.


19 years agofix various problems with backticks on win32
Gurusamy Sarathy [Fri, 6 Mar 1998 07:25:10 +0000 (19:25 +1200)] 
fix various problems with backticks on win32

Several people have complained that qx// misbehaves on win32.
It doesn't honor PERL5SHELL (like the docs claim), and it
wants to start a shell even when it doesn't need to.  This
patch fixes such problems by providing our own popen()/pclose().


19 years agomv-if-diff
Robin Barker [Fri, 27 Mar 1998 05:59:58 +0000 (17:59 +1200)] 

There is a bug with mv-if-diff which is fixed by the following patch.

At the moment, this bug is hidden because all calls to mv-if-diff
are "sh mv-if-diff tmp ..." !


19 years ago'use Env' on WinNT/95 fails
Gurusamy Sarathy [Fri, 27 Mar 1998 12:09:21 +0000 (00:09 +1200)] 
'use Env' on WinNT/95 fails

On Wed, 25 Mar 1998 14:22:54 GMT, Lewis Tsao wrote:
>Given the following:
>        use Env;
>Perl reports error saying:
>Modification of a read-only value attempted at C:\PERL\lib/
>line 48.
>BEGIN failed--compilation aborted at (eval 1) line 2.
>BEGIN failed--compilation aborted at ....
>I think the problem here is 'keys(%ENV)' in picks up empty
>values resulting in empty variable '$ '. This does not appear to
>happen under Unix.
>A work round appears to ignore empty '$sym' in vars::import inside
>the foreach loop.

This fix should be applicable to the maintenance branch as well.


19 years agoAllow POSIX to export nice()
Bruce J. Keeler [Wed, 18 Mar 1998 04:11:02 +0000 (16:11 +1200)] 
Allow POSIX to export nice()

Subject: Re: initgroups() and setgroups() for

[...], nice() is in POSIX.pod and POSIX.xs, but not in
so you can't easily import it.  Ridiculously trivial patch:


19 years agobug in Class::Struct
Tom Christiansen [Thu, 4 Dec 1997 09:55:46 +0000 (21:55 +1200)] 
bug in Class::Struct

I am detached from the net and am consequently unable to test the
following situaton with any later releases, but at least under 5.004_01,
the Class::Struct module has a brief but critical bug.  It isn't testing
against the proper class when assigning to a structure element that is
a class.

This can be demo'd in the following pair of samples.  This one worked ok:

    use Class::Struct qw(struct);
    my($folks, $dad);
    struct Person => [name => '$', age  => '$'];
    struct Family => {head => 'Person', homes => '@'};
    $folks  = 'Family'->new();
    $dad    = $folks->head;
    printf("%s's age is %d\n", $folks->head->name, $folks->head->age);

But this one blows up:

    use Class::Struct qw(struct);
    my($folks, $dad);
    struct Person => [name => '$', age  => '$'];
    struct Family => {head => 'Person', homes => '@'};
    $folks  = 'Family'->new();
    $dad    = 'Person'->new();
    printf("%s's age is %d\n", $folks->head->name, $folks->head->age);

The following one-word patch fixes the problem.


19 years agoWarning on mis-use of 'use lib'
Tom Phoenix [Mon, 26 Jan 1998 06:16:53 +0000 (18:16 +1200)] 
Warning on mis-use of 'use lib'

It's too common for someone to mis-use 'use lib' something like this:

    use lib '/home/mydir/.lib/';

Thus this patch. Cheers!

Credited: M.J.T. Guy <>
Credited: Chip Salzenberg <>


19 years agoFile::Find rewrite
Ilya Zakharevich [Tue, 3 Mar 1998 02:05:38 +0000 (14:05 +1200)] 
File::Find rewrite

This combines find and finddepth into one function.  The main advantage
is that this change allows addition of other configuration options (when
I posted an experimental patch earlier people found 8-10 different options
they wanted from find) except "bydepth" at later time.

Additional advantage is that this merge simplifies maintainance by reducing
number of mostly identical code.

Additionally, with this patch and File::Basename will be required
only if needed.

Here is the speed comparison: on test runs over a directory with 65000
files in 4300 subdirectories the deviation of runtime (either with or
without the patch, after 3 runs to suck all into HD cache) was +-0.5%,
and the slowdown after the patch is applied is circa 1%, so the


19 years agoMath/, fixed use of undefined value.
Abigail [Thu, 12 Mar 1998 11:18:14 +0000 (23:18 +1200)] 
Math/, fixed use of undefined value.

With -w, Math::BigInt spits out warning under certain conditions
about use of undefined values, when adding/subtracting numbers.
Here's a patch. (Against 5.004_04).


19 years agounpacking negatives on Alpha
Achim Bohnet [Tue, 14 Oct 1997 01:58:42 +0000 (13:58 +1200)] 
unpacking negatives on Alpha

 >  > (0) ~ > perl -e 'print unpack("i",pack("i",-1)),"\n"'
 >  > 4294967295
 >  > (0) ~ >
 >  > Should print -1.
 > Looks like an optimizer bug of Digitals GEM based cc.  Compiling
 > pp.c with no optimization

Here's the start of my personal history working around optimizer
bugs (not counting switching off -O).  Patch against 5.004_04.

o09(0) ~/data9/perlsrc/5.004_04/standard/t > perl op/pack.t | tail -2
ok 29
not ok 30
o09(0) ~/data9/perlsrc/5.004_04/standard/t > ../perl op/pack.t | tail -2
ok 29
ok 30
o09(0) ~/data9/cpan/build/C-DynaLib-0.51/DynaLib > perl
ok 1
ok 2
not ok 3; expected "[-65 5000000000 string]", got "[4294967231 5000000000 string]"
o09(0) ~/data9/cpan/build/C-DynaLib-0.51/DynaLib > ~/data9/perlsrc/5.004_04/standard/perl
ok 1
ok 2
ok 3

Still no little test case for Digitals Hot Line.  Maybe next time.


19 years agotwo trivial tweaks to 5.004m5t1
Gurusamy Sarathy [Thu, 5 Mar 1998 11:48:12 +0000 (23:48 +1200)] 
two trivial tweaks to 5.004m5t1


19 years agoTainting propagates from nowhere
Gurusamy Sarathy [Fri, 13 Mar 1998 09:31:31 +0000 (21:31 +1200)] 
Tainting propagates from nowhere

On Thu, 12 Mar 1998 13:47:16 EST, Chip Salzenberg wrote:
>> ---------- Forwarded message ----------
>> Date: Thu, 9 Oct 1997 10:47:28 -0700 (PDT)
>> From: Tom Phoenix <>
>> To:
>> Subject: Tainting propagates from nowhere
>>     $ perl -Tw
>>     sub wazzat { substr "@_", 0 }
>>     wazzat $0; # $0 is tainted
>>     kill 0, wazzat(); # This shouldn't be
>>     <Ctrl-D>
>>     Insecure dependency in kill while running with -T switch at - line 4.

This is due to the reuse of TARG _within_ an op. vec() also suffers from
it. Other ops may have the problem also, but I haven't gone looking.  Of
course, since the problem is a conservative one ("too much paranoia"),
there's no cause for alarm.


19 years agoStatement unlikely to be reached warning
Hans Mulder [Wed, 8 Oct 1997 04:51:51 +0000 (16:51 +1200)] 
Statement unlikely to be reached warning (Larry Wall) wrote:
>: Trevor Blackwell <> wrote:
>: >I propose that the following operators should not generate the
>: >"unlikely to be reached" warning in the shadow of an operator like
>: >exec:
>: >
>: >   exit
>: >   warn
>: >   die
>: >   print
>: "Die" already has that property.  Adding it to "exit" and "warn"
>: sounds reasonable.  I think that "print" should not have that
>: property, because it's quite possible that somebody who mistakenly
>: calls "exec" just happens to put an unrelated "print" statement next.
>Sounds reasonable to me.

Okay, here's a patch over 5.004_04:

p5p-msgid: 1997Dec24.171511.2683516@cor.newman

19 years agoStale SP in pp_substr
Stephen McCamant [Thu, 19 Mar 1998 09:10:00 +0000 (21:10 +1200)] 
Stale SP in pp_substr

Another problem involving SvPV(), uncovered by STRESS_REALLOC.


19 years agoRevised taint hole closer
Chip Salzenberg [Wed, 22 Apr 1998 23:49:00 +0000 (11:49 +1200)] 
Revised taint hole closer

Oops!  I'd forgotten that allowing tainted values in multi-argument
exec() and system() is a _feature_.  Mea culpa....

Here's a revised patch that doesn't break that feature:

Credited: Ilya Zakharevich <>

p5p-msgid: 19980310222127.09350@cyprus

19 years agoAdd HAS_GNULIBC define
Andy Dougherty [Thu, 24 Jul 1997 23:34:57 +0000 (11:34 +1200)] 
Add HAS_GNULIBC define

Subject: [PATCH 5.004_04-m1] Add HAS_GNULIBC define

Configure already computes it anyway, so we might as well get set up to
use it in POSIX.xs.

p5p-msgid: Pine.SUN.3.96.980305115202.9180K-100000@newton.phys

19 years agoConfusing error from perl -e "x'"
Hans Mulder [Thu, 5 Mar 1998 06:12:14 +0000 (18:12 +1200)] 
Confusing error from perl -e "x'"

If one forgets a string delimiting apostrophe, one may
get a confusing error message.  For example

perl -e "x'"


Bad name after x:: at -e line 1.

There's no double colon in there.

I'm aware that ' is an ancient synonymn for ::, but I think
this message is confusing for users who haven't used perl4.


19 years agoMake autouse -w-safe
Ilya Zakharevich [Mon, 8 Dec 1997 11:16:12 +0000 (23:16 +1200)] 
Make autouse -w-safe

This removes the the documented bugs of (together with the
description ;-).  This is checked with _55, but may work with _04
as well.



19 years agoConsider @ARGV to be plain files if inplace (-i)
Chip Salzenberg [Wed, 22 Apr 1998 23:49:00 +0000 (11:49 +1200)] 
Consider @ARGV to be plain files if inplace (-i)

As someone (?) recently observed, Perl's magical handling of filenames
like "ls|" and "|tee foo bar" doesn't make a lot of sense in inplace
editing mode (the -i command line option).

This patch disables magic names in inplace mode.  I tested it on a
file named "echo abc|"; I ended up with files named "echo abc|" and
"echo abc|~".

(Boy am I glad I already did the scutwork for the sysopen()


19 years agoConservative C<*x = undef> patch
Chip Salzenberg [Wed, 22 Apr 1998 23:49:00 +0000 (11:49 +1200)] 
Conservative C<*x = undef> patch

This fits what Tim said he wants:  C<undef *x> clears out everything
in *x, but C<*x = undef> just generates a warning.

p5p-msgid: 19980310163310.48509@cyprus

19 years agoAdditional regex-cache patch
Chip Salzenberg [Wed, 22 Apr 1998 23:49:00 +0000 (11:49 +1200)] 
Additional regex-cache patch

Trial 1 of 5.004_05 includes a patch from me that partially fixes a
bug with detection of duplicate regexes.  At the time I made the
patch, I thought a complete fix was impossible.  However, Ilya has
just pointed out to me that it is possible after all.

Therefore, this patch should be added to to 5.004_05 and also to the
dev track.

p5p-msgid: 19980305104831.38100@cyprus