| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
Extracted from patch submitted by Lajos Veres in RT #123693.
|
| |
|
|
|
|
| |
Bump $VERSION.
|
| |
|
|
|
|
|
|
| |
If the sv count goes *down* (which doesn’t happen on my machine, but see
<CANgJU+W8_nVg9-YVRBe2r=ZYCbu9-R3RPf0tbH-XWrtVxYhGpA@mail.gmail.com>), we
certainly don’t have a leak.
|
|
|
|
|
|
| |
It probably doesn't matter anywhere but VMS, but on VMS,
disk:[dir.blead]t (the result of catfile) is an invalid argument to
chdir, but disk:[dir.blead.t] (the result of catdir) is correct.
|
|
|
|
|
|
|
|
|
|
|
|
| |
See ticket #116064.
File::Glob and ::DosGlob free data associated with a calling op when
that op is freed.
During global destruction, there is no need to do that, as it will be
freed anyway.
Also, during sv_clean_all dMY_CXT can cause us to read freed memory.
|
|
|
|
|
|
| |
If the random number of ops happens to be 0 the first time, then we
end up with a false positive, as evaluating '$x+<*>' after '<*>' will
vivify the *x glob.
|
|
|
|
|
|
|
| |
The macro MY_CXT_INIT contains a variable declaration, and xsubpp doesn't
wrap XS BOOT sections within a block, hence code at the start of the BOOT
section may already be after code. Hence wrap MY_CXT_INIT within a block, to
ensure that its initialisation is before any code.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
File::DosGlob keeps its own hash of arrays of file names. Each array
corresponds to one call site. When iteration finishes, it deletes
the array. But if iteration never finishes, and the op at the call
site is freed, the array remains. So eval "scalar<*>" will cause a
memory leak under the scope of ‘use File::DosGlob "glob"’.
We already have a mechanism for hooking the freeing of ops. So
File::DosGlob can use that.
This is similar to 11ddfebc6e which fixed up File::Glob, but that com-
mit mistakenly used a C static for storing the old hook, even though
PL_opfreehook is an interpreter variable, not a global. (The next
commit will fix that.)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Use the address of the glob op instead.
This argument is going away, because it is undocumented, unused on
CPAN outside of the core, and may get in the way of allowing glob() to
be overridden properly.
Another reason is that File::DosGlob leaks memory, because a glob op
freed before iteration has finished will leave File::DosGlob still
holding on to the remainder of the list of files. The easiest way to
fix that will involve using an op address instead of a special index,
so there will be no reason to keep it.
|
| |
|
|
|