History log of /PHP-7.4/ext/spl/spl_directory.c (Results 1 – 25 of 403)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 976e71a2 13-Apr-2021 Christoph M. Becker

Fix #80933: SplFileObject::DROP_NEW_LINE is broken for NUL and CR

`buf` may contain NUL bytes, so we must not use `strcspn()` but rather
a binary safe variant. However, we also must not

Fix #80933: SplFileObject::DROP_NEW_LINE is broken for NUL and CR

`buf` may contain NUL bytes, so we must not use `strcspn()` but rather
a binary safe variant. However, we also must not detect a stray CR as
line ending, and since we only need to check line endings at the end
of the buffer, we can nicely optimize.

Co-authored-by: Nikita Popov <nikita.ppv@gmail.com>

Closes GH-6836.

show more ...


# 44a80b64 15-Feb-2021 Nikita Popov

Fix leak when breaking out of FilesystemIterator

We need to always destroy current, not just when iter.data is not
set.

Take this opportunity to clean up the iterator destructor

Fix leak when breaking out of FilesystemIterator

We need to always destroy current, not just when iter.data is not
set.

Take this opportunity to clean up the iterator destructor code a
bit, to remove redundant checks and incorrect comments.

show more ...


# 32f377b0 19-Jun-2020 Nikita Popov

Fixed bug #79710

Make sure we don't use zresource after the stream has been destroyed.


# 22a077b6 06-Apr-2020 Christoph M. Becker

Fix #69264: __debugInfo() ignored while extending SPL classes

We actually implement `::__debugInfo()` and drop the `get_debug_info()`
handlers of all relevant SPL classes. This is clean

Fix #69264: __debugInfo() ignored while extending SPL classes

We actually implement `::__debugInfo()` and drop the `get_debug_info()`
handlers of all relevant SPL classes. This is cleaner and gives more
flexibility regarding overriding the functionality in descendant
classes.

show more ...


# 58b17906 03-Feb-2020 Nikita Popov

Apply tidy formatting

Mostly reindent PHP scripts to spaces.


# 4cd6d384 17-Dec-2019 Christoph M. Becker

Fix #78976: SplFileObject::fputcsv returns -1 on failure

`php_stream_write()` returns `-1` on failure now, which has to be
catered to by `SplFileObject::fputcsv()` which still is suppose

Fix #78976: SplFileObject::fputcsv returns -1 on failure

`php_stream_write()` returns `-1` on failure now, which has to be
catered to by `SplFileObject::fputcsv()` which still is supposed to
return `false` on failure.

show more ...


Revision tags: php-7.3.13RC1, php-7.2.26RC1, php-7.4.0
# a5a15965 25-Nov-2019 Christoph M. Becker

Fix #78863: DirectoryIterator class silently truncates after a null byte

Since the constructor of DirectoryIterator and friends is supposed to
accepts paths (i.e. strings without NUL byt

Fix #78863: DirectoryIterator class silently truncates after a null byte

Since the constructor of DirectoryIterator and friends is supposed to
accepts paths (i.e. strings without NUL bytes), we must not accept
arbitrary strings.

show more ...


Revision tags: php-7.2.25, php-7.3.12, php-7.4.0RC6, php-7.3.12RC1, php-7.2.25RC1, php-7.4.0RC5, php-7.1.33, php-7.2.24, php-7.3.11, php-7.4.0RC4, php-7.3.11RC1, php-7.2.24RC1, php-7.4.0RC3, php-7.2.23, php-7.3.10, php-7.4.0RC2, php-7.2.23RC1, php-7.3.10RC1
# 1ac6b025 08-Sep-2019 CHU Zhaowei

Fix bug #72884 isCloneable() on SplFileObject should return false


Revision tags: php-7.4.0RC1, php-7.1.32, php-7.2.22, php-7.3.9, php-7.4.0beta4, php-7.2.22RC1, php-7.3.9RC1, php-7.4.0beta2, php-7.1.31, php-7.2.21, php-7.3.8, php-7.4.0beta1
# d59aac58 18-Jul-2019 Nikita Popov

Report errors from stream read and write operations

The php_stream_read() and php_stream_write() functions now return
an ssize_t value, with negative results indicating failure. Function

Report errors from stream read and write operations

The php_stream_read() and php_stream_write() functions now return
an ssize_t value, with negative results indicating failure. Functions
like fread() and fwrite() will return false in that case.

As a special case, EWOULDBLOCK and EAGAIN on non-blocking streams
should not be regarded as error conditions, and be reported as
successful zero-length reads/writes instead. The handling of EINTR
remains unclear and is internally inconsistent (e.g. some code-paths
will automatically retry on EINTR, while some won't).

I'm landing this now to make sure the stream wrapper ops API changes
make it into 7.4 -- however, if the user-facing changes turn out to
be problematic we have the option of clamping negative returns to
zero in php_stream_read() and php_stream_write() to restore the
old behavior in a relatively non-intrusive manner.

show more ...


Revision tags: php-7.2.21RC1, php-7.3.8RC1, php-7.4.0alpha3, php-7.3.7, php-7.2.20, php-7.4.0alpha2, php-7.3.7RC3
# 608097a9 19-Jun-2019 Nikita Popov

Fix various instances of memcpy null ub


# 7cbd4f31 19-Jun-2019 Nikita Popov

Remove copy argument from php_glob_stream_get_path/pattern

This is unused, and shouldn't be part of the API.


Revision tags: php-7.3.7RC2, php-7.2.20RC2, php-7.4.0alpha1, php-7.3.7RC1, php-7.2.20RC1, php-7.2.19
# 83804519 28-May-2019 Dmitry Stogov

Replace ZVAL_COPY() and ZVAL_COPY_VALUE() for IS_OBJECT by cheaper macros


Revision tags: php-7.3.6, php-7.1.30, php-7.2.19RC1, php-7.3.6RC1, php-7.1.29, php-7.2.18, php-7.3.5
# 91c6fb88 27-Apr-2019 Craig Duncan

Fix #77024: SplFileObject::__toString() may return array

- Correct the behaviour of casting spl files to strings
- Add a test for Bug 77024


# baa96693 19-Apr-2019 Fabien Villepinte

Fix typo in comments


Revision tags: php-7.2.18RC1, php-7.3.5RC1, php-7.2.17, php-7.3.4, php-7.1.28, php-7.3.4RC1, php-7.2.17RC1
# 4f034016 18-Mar-2019 Nikita Popov

Partial fix for bug #77751

This avoids the segfault, but it will not make writing to the
SplFileObject during output shutdown work.


Revision tags: php-7.1.27, php-7.3.3, php-7.2.16, php-7.3.3RC1, php-7.2.16RC1, php-7.2.15, php-7.3.2, php-7.2.15RC1, php-7.3.2RC1
# 254a5914 09-Jan-2019 Christoph M. Becker

Fix #77431 SplFileInfo::__construct() accepts NUL bytes

`SplFileInfo::__construct()` has to expect a path instead of a string,
analogous to `SplFileObject::__construct()`.


# ec28d4c2 29-Jan-2019 Ahmed Abdou

Fix bug #51068 (glob:// do not support current path relative)

Fix DirectoryIterator glob://* current path relative queries


# 92ac598a 22-Jan-2019 Peter Kokot

Remove local variables

This patch removes the so called local variables defined per
file basis for certain editors to properly show tab width, and
similar settings. These are mainly

Remove local variables

This patch removes the so called local variables defined per
file basis for certain editors to properly show tab width, and
similar settings. These are mainly used by Vim and Emacs editors
yet with recent changes the once working definitions don't work
anymore in Vim without custom plugins or additional configuration.
Neither are these settings synced across the PHP code base.

A simpler and better approach is EditorConfig and fixing code
using some code style fixing tools in the future instead.

This patch also removes the so called modelines for Vim. Modelines
allow Vim editor specifically to set some editor configuration such as
syntax highlighting, indentation style and tab width to be set in the
first line or the last 5 lines per file basis. Since the php test
files have syntax highlighting already set in most editors properly and
EditorConfig takes care of the indentation settings, this patch removes
these as well for the Vim 6.0 and newer versions.

With the removal of local variables for certain editors such as
Emacs and Vim, the footer is also probably not needed anymore when
creating extensions using ext_skel.php script.

Additionally, Vim modelines for setting php syntax and some editor
settings has been removed from some *.phpt files. All these are
mostly not relevant for phpt files neither work properly in the
middle of the file.

show more ...


# 0cf7de1c 30-Jan-2019 Zeev Suraski

Remove yearly range from copyright notice


Revision tags: php-5.6.40, php-7.1.26, php-7.3.1, php-7.2.14
# 22c9d191 26-Dec-2018 Dmitry Stogov

Removed useless zval_ptr_dtor(return_value)


Revision tags: php-7.2.14RC1, php-7.3.1RC1, php-5.6.39, php-7.1.25, php-7.2.13, php-7.0.33
# 3b0f0511 02-Dec-2018 Christoph M. Becker

Allow empty $escape to eschew escaping CSV

Albeit CSV is still a widespread data exchange format, it has never been
officially standardized. There exists, however, the “informational” R

Allow empty $escape to eschew escaping CSV

Albeit CSV is still a widespread data exchange format, it has never been
officially standardized. There exists, however, the “informational” RFC
4180[1] which has no notion of escape characters, but rather defines
`escaped` as strings enclosed in double-quotes where contained
double-quotes have to be doubled. While this concept is supported by
PHP's implementation (`$enclosure`), the `$escape` sometimes interferes,
so that `fgetcsv()` is unable to correctly parse externally generated
CSV, and `fputcsv()` is sometimes generating non-compliant CSV. Since
PHP's `$escape` concept is availble for many years, we cannot drop it
for BC reasons (even though many consider it as bug). Instead we allow
to pass an empty string as `$escape` parameter to the respective
functions, which results in ignoring/omitting any escaping, and as such
is more inline with RFC 4180. It is noteworthy that this is almost no
userland BC break, since formerly most functions did not accept an empty
string, and failed in this case. The only exception was `str_getcsv()`
which did accept an empty string, and used a backslash as escape
character then (which appears to be unintended behavior, anyway).

The changed functions are `fputcsv()`, `fgetcsv()` and `str_getcsv()`,
and also the `::setCsvControl()`, `::getCsvControl()`, `::fputcsv()`,
and `::fgetcsv()` methods of `SplFileObject`.

The implementation also changes the type of the escape parameter of the
PHP_APIs `php_fgetcsv()` and `php_fputcsv()` from `char` to `int`, where
`PHP_CSV_NO_ESCAPE` means to ignore/omit escaping. The parameter
accepts the same values as `isalpha()` and friends, i.e. “the value of
which shall be representable as an `unsigned char` or shall equal the
value of the macro `EOF`. If the argument has any other value, the
behavior is undefined.” This is a subtle BC break, since the character
`chr(128)` has the value `-1` if `char` is signed, and so likely would
be confused with `EOF` when converted to `int`. We consider this BC
break to be acceptable, since it's rather unlikely that anybody uses
`chr(128)` as escape character, and it easily can be fixed by casting
all `escape` arguments to `unsigned char`.

This patch implements the feature requests 38301[2] and 51496[3].

[1] <https://tools.ietf.org/html/rfc4180>
[2] <https://bugs.php.net/bug.php?id=38301>
[3] <https://bugs.php.net/bug.php?id=51496>

show more ...


Revision tags: php-7.3.0, php-7.1.25RC1, php-7.2.13RC1, php-7.3.0RC6
# 0f7f1498 15-Nov-2018 Dmitry Stogov

Use ZEND_THIS macro to hide implementation details in extensions code.


# c6ad0b92 13-Nov-2018 Dmitry Stogov

Replace getThis() by EX(This), when additional check is not necessary.


Revision tags: php-7.1.24, php-7.2.12, php-7.3.0RC5, php-7.1.24RC1, php-7.2.12RC1, php-7.3.0RC4, php-7.1.23, php-7.2.11, php-7.3.0RC3, php-7.1.23RC1, php-7.2.11RC1, php-7.3.0RC2, php-5.6.38, php-7.1.22, php-7.3.0RC1, php-7.2.10, php-7.0.32, php-7.1.22RC1, php-7.3.0beta3, php-7.2.10RC1
# 32a728d3 19-Aug-2018 Christoph M. Becker

Fix #68825: Exception in DirectoryIterator::getLinkTarget()

intern->file_name may not have been properly set when
DirectoryIterator::getLinkTarget() is called, so we make sure it is

Fix #68825: Exception in DirectoryIterator::getLinkTarget()

intern->file_name may not have been properly set when
DirectoryIterator::getLinkTarget() is called, so we make sure it is
before using it.

show more ...


Revision tags: php-7.1.21, php-7.2.9, php-7.3.0beta2
# 84b195d9 10-Aug-2018 Gabriel Caruso

Fix some misspellings


12345678910>>...17