| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
PERLIO_BUFSIZ was already in use by Encode::Unicode for the
PerlIOEncode_xxx layer, so it makes sense to specify that this
macro is for the PerlIOBuf_xxx layer and that it is a default
value that may eventually be settable at run-time.
|
|
|
|
|
|
|
|
|
|
|
| |
The 4K buffer size was chosen way back in bb9950b. Significant performance
improvements are seen with larger buffer sizes, though the optimum size
likely varies by architecture and workload. For starters, we'll leave the
default as-is but make the buffer size a macro and thus user-configurable via:
sh Configure -Accflags=-DPERLIO_BUFSIZ=<number>
Choosing a better (larger) default is still TODO.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Expose cop hint hashes as a type COPHH, with a cophh_* API which is a
macro layer over the refcounted_he_* API. The documentation for cophh_*
describes purely API-visible behaviour, whereas the refcounted_he_*
documentation describes the functions mainly in terms of the
implementation. Revise the cop_hints_* API, using the flags parameter
consistently and reimplementing in terms of cophh_*. Use the cophh_*
and cop_hints_* functions consistently where appropriate.
[Modified by the committer to update two calls to
Perl_refcounted_he_fetch recently added to newPMOP.]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
please find attached a patch against blead originating from [1] ,
that improves the "Layer does not match this perl" error message by
telling the user which IO layer failed and how. I've tested the
patch against a recent bleadperl and even without the modifications
to perldiag.t all tests pass. Still, for completeness, I've patched
perldiag.t as well.
The code is not mine, it was written and posted by Tye McQueen, I've
just tested it [2] and ferry the information. I'm aware that this
patch is too late for 5.12 , but in the sense of improving Perl in
the long run, I hope the change still makes it into a version of
Perl.
-max
[1] http://perlmonks.org/?node_id=829815
[2] Certified Works On My Machine, 2010
|
|
|
|
|
|
|
|
|
| |
This restores the perl 5.10/12 behaviour, making open treat \$foo as a
scalar reference if it is a glob copy (SvFAKE).
It also fixes an existing assertion failure that the test now trig-
gers. PerlIOScalar_pushed was not downgrading the sv before set-
ting SvCUR.
|
|
|
|
|
| |
PerlIO_layer_from_ref must not treat a real glob as a scalar. This
function was not updated when SVt_PVGV was moved before SVt_PVLV.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When perlio became the default and unixio became the default bottom
layer, the most common path for creating files from Perl became
PerlIOUnix_open, which has always explicitly used 0666 as the
permission mask. This has the following undesireable effects on
VMS:
1.) The execute bit is lost regardless of whether it's in the default
permissions.
2.) Delete permission (which doesn't exist in the Unix permission mask) is
copied from write permission, so granting write permission also grants
delete even if it's not in the default permission mask. This can result
in an inadvertent widening of permissions.
3.) System permissions (which don't exist in the Unix permission mask) are
copied from owner permissions, so any distinction between system and
owner is lost.
4.) ACLs are not inherited. For example, setting a default_protection ACE
on a directory such that all world access is disallowed will be ignored;
world will have the intersection of RWD (the final 6 in 0666) and whatever
the default permissions are regardless of what the ACL says. Thus not
inheriting ACLs can result in the inadvertent widening of permissions.
The way to avoid all of this is to pass 0777 as the permissions to open().
In the VMS CRTL, 0777 has a special meaning over and above intersecting
with the current umask; specifically, it allows Unix syscalls to preserve
native default permissions. Details currently documented at:
http://h71000.www7.hp.com/doc/732final/5763/5763pro_060.html#umask_routine
|
|
|
|
|
| |
sv can't actually be used uninitialized, but set it to zero to
shut up stupid compilers
|
| |
|
| |
|
|
|
|
|
|
| |
When -T is enabled, or when $ENV{TMPDIR} is bogus, perlio.c used a pathname
matching </tmp/PerlIO_??????>. However, it was only correctly unlinking the
file for the case of -T enabled.
|
| |
|
|
|
|
|
|
|
| |
Replace ckWARN{,2,3,4}() && Perl_warner() with it, which trades reduced code
size (about 0.2%), for 1 more function call if warnings are not enabled.
However, if we're now in the L1 or L2 cache when we weren't previously, that's
still going to be a speed win.
|
|
|
|
| |
since 5.005
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
While I am firmly in the school of "do not look at $! except immediately
after a failure", I also agree that spuriously setting it is messy. But
there is just no way of knowing where your errno might have been.
The problem was that PerlIO_fast_gets() (and other nearby similar
capability-checking PerlIO routines) set the errno (and it was being
called a lot, from sv_gets()). I think setting the errno here was
a mistake: checking for "can has FOO" should not set external state,
such as the errno. The patch removes that errno trashing from all those
routines.
|
|
|
|
|
|
|
| |
Use a default of /tmp on Unixes when TMPDIR is unset or empty, or
when creation of a temporary file in it fails
This goes on top of commit 26e8050aaf2eeca2f04cdc7bc5df07f8dc4ff0f9
|
| |
|
| |
|
|
|
|
| |
need to increase the refcount on a NULL fd.
|
|
|
|
| |
use it where possible.
|
|
|
|
|
|
| |
From: "Jerry D. Hedden" <jdhedden@cpan.org>
Message-ID: <1ff86f510812090909y11947acfy317e46417b9ae91d@mail.gmail.com>
p4raw-id: //depot/perl@35073
|
|
|
|
|
| |
Message-ID: <20081127070141.GD17663@tytlal.topaz.cx>
p4raw-id: //depot/perl@35018
|
|
|
|
|
|
| |
setting the tests to TODO.
p4raw-link: @34775 on //depot/perl: 2556f95e0f4f5e8e95c9766374614ab52edefe3d
p4raw-id: //depot/perl@34778
|
|
|
|
|
|
|
|
| |
:stdio
From: "Goro Fuji" <gfuji@cpan.org>
Message-ID: <efb9c59b0807061604q476025e9n85893f131a6bf23e@mail.gmail.com>
p4raw-id: //depot/perl@34775
|
|
|
|
|
|
|
|
|
| |
From: "Goro Fuji" (via RT) <perlbug-followup@perl.org>
Message-ID: <rt-3.6.HEAD-11257-1211782242-1590.54828-75-0@perl.org>
The second part of the patch. The first part was in change #33978.
p4raw-link: @33978 on //depot/perl: 9d97e8b8cac47626e28c79994e7ab0d5c8589515
p4raw-id: //depot/perl@34774
|
|
|
|
|
|
| |
Message-ID: <25940.1225611819@chthon>
Date: Sun, 02 Nov 2008 01:43:39 -0600
p4raw-id: //depot/perl@34698
|
|
|
|
|
|
| |
Can't easily do gv.h, as GvGP() (at least) needs to split into two
macros - one const for reading, one non-const for writing.
p4raw-id: //depot/perl@34679
|
|
|
|
|
| |
erroneous const in dump.c.
p4raw-id: //depot/perl@34675
|
|
|
|
|
|
|
| |
same FILE * twice, thanks to it calling out to Perl space inside the
close call tree, with the underlying PerlIO * already closed, but not
unlinked.
p4raw-id: //depot/perl@34596
|
|
|
| |
p4raw-id: //depot/perl@34585
|
|
|
|
|
|
|
|
| |
From: "Goro Fuji" (via RT) <perlbug-followup@perl.org>
Message-ID: <rt-3.6.HEAD-11257-1211782242-1590.54828-75-0@perl.org>
First chunk of the patch only
p4raw-id: //depot/perl@33978
|
|
|
| |
p4raw-id: //depot/perl@33671
|
|
|
| |
p4raw-id: //depot/perl@33504
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
still two more races to be lost.
1: The close() could still happen after the (premature) mutex release
allowed another thread to dup() to that file descriptor.
2: The initial dup() could happen whilst another thread was in the
mutex protected region, and had temporarily closed the file
descriptor.
Race conditions remain with any other thread that actually does I/O
during the execution of the mutex protected region (as noted in a
comment), and dup() failure is not handled gracefully (also noted).
p4raw-id: //depot/perl@33498
|
|
|
|
|
|
|
|
|
|
| |
holding our true love file handle open, to stop anything else
temporarily using it for a quick dup() fling, and then closing the
file handle underneath us.
I suspect that the lack of this protection was the cause of the threads
free.t and blocks.t failures on OS X on 5.8.x, where usefaststdio is
the default, and PerlIO is unable to "invalidate" the FILE *.
p4raw-id: //depot/perl@33492
|
|
|
|
|
| |
from dup(), so it can't also be the "don't do anything later" value.
p4raw-id: //depot/perl@33491
|
|
|
|
|
| |
http://www.nntp.perl.org/group/perl.daily-build.reports/2008/02/msg53937.html
p4raw-id: //depot/perl@33370
|
|
|
|
|
|
| |
From: "Jerry D. Hedden" <jdhedden@cpan.org>
Message-ID: <1ff86f510802120700q689fb457ya5939bb440626157@mail.gmail.com>
p4raw-id: //depot/perl@33296
|
|
|
|
|
|
|
|
|
|
|
|
| |
ability to create landmines that will explode under someone in the
future when they upgrade their compiler to one with better
optimisation. We've already done this at least twice.
(Yes, some of the assertions are after code that would already have
SEGVd because it already deferences a pointer, but they are put in
to make it easier to automate checking that each and every case is
covered.)
Add a tool, checkARGS_ASSERT.pl, to check that every case is covered.
p4raw-id: //depot/perl@33291
|
|
|
| |
p4raw-id: //depot/perl@33261
|
|
|
| |
p4raw-id: //depot/perl@33248
|
|
|
|
|
|
| |
PerlIO_get_layers(), by co-opting the new SVs it creates, rather than
copying them.
p4raw-id: //depot/perl@33182
|
|
|
|
|
| |
it still relies on an interpreter being present.
p4raw-id: //depot/perl@32235
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
PerlIO_releaseFILE() to manage the reference counts of fds correctly
has the side effect of making some XS modules "leak" descriptors.
This is because the typemap calls PerlIO_findFILE(), which sometimes
(but not always) calls PerlIO_exportFILE(). To be consistent,
PerlIO_fildFILE() needs to either always give you a reference, or
always not give you a reference. It seems better to do the latter as
the call to PerlIO_exportFILE() is only an implementation detail, so
arrange for it to immediately free up the reference that
PerlIO_exportFILE() created.
p4raw-id: //depot/perl@32224
|
|
|
|
|
|
|
|
| |
Message-Id: <472BD128.9080105@iki.fi>
PerlIO_teardown is called when there may no longer be an
interpreter available
p4raw-id: //depot/perl@32215
|
|
|
|
|
| |
string.
p4raw-id: //depot/perl@32044
|
|
|
|
|
| |
Perl_catSVpvf() to extend a zero-length SV.
p4raw-id: //depot/perl@32042
|
|
|
| |
p4raw-id: //depot/perl@30781
|
|
|
|
|
| |
reference counts correctly.
p4raw-id: //depot/perl@30633
|