Christoph M. Becker
ad7b9f4e50
Fix GH-8235: iterator_count() may run indefinitely
...
We need to prevent integer overflow to eventually stop the iteration.
A test case doesn't appear sensible for this, because even on 32bit
architectures a respective test easily runs for a few minutes.
Closes GH-8447.
2022-05-03 12:57:58 +02:00
Nikita Popov
3adbafeef7
Fix leak when iterating uninitialized RecursiveIteratorIterator
2021-09-24 13:17:34 +02:00
Nikita Popov
b9ae73eee9
Fix RecursiveIteratorIterator segfault for invalid aggregate
...
The code was assuming that the returned value is an object.
Reuse the logic from IteratorIterator.
2021-07-15 13:11:28 +02:00
Nikita Popov
2c1b5c4365
Support GC for AppendIterator
...
This also requires adding GC support for ArrayIterator internal
iterators.
2020-10-01 16:18:23 +02:00
Nikita Popov
afab9eb48c
Fix bug #65387
...
Add GC support to dual_it. This is still missing AppendIterator
support.
2020-10-01 16:12:56 +02:00
Máté Kocsis
e95fa3eb0c
Fix a few Iterator signatures
...
Closes GH-6176
2020-09-21 16:03:09 +02:00
George Peter Banyard
063fdd9422
Use ValueError instead of exceptions in SPL extension
2020-09-15 12:49:59 +02:00
George Peter Banyard
b6207338e8
Use normal error in SPL for uninitialized objects
2020-09-15 12:49:59 +02:00
George Peter Banyard
9affbef0e6
Use normal error in SPL for 'An iterator cannot be used with foreach by reference'
2020-09-15 12:49:59 +02:00
George Peter Banyard
61c299fe9c
Error promotions in SPL
...
Warning to Error promotion and a Notice to Warning promotion to align
with the behaviour specified in the Reclassify Engine Warnings RFC.
Closes GH-6072
2020-09-03 19:27:02 +02:00
Nikita Popov
0a439fa932
Merge branch 'PHP-7.4'
...
* PHP-7.4:
Add missing initialization check to RegexIterator::getRegex()
2020-08-14 10:42:14 +02:00
Nikita Popov
a0c231c0f5
Add missing initialization check to RegexIterator::getRegex()
2020-08-14 10:41:36 +02:00
Nikita Popov
7991fc2753
Accept zend_object in zend_read_property
2020-08-07 16:40:27 +02:00
Nikita Popov
dc30e1d812
Cleanup SPL instantiation code
2020-07-23 16:00:12 +02:00
Nikita Popov
e6ae1bf489
Check dual_it validity in CallbackFilterIterator::accept()
...
Avoid accessing intern->u.cbfilter null pointer, though it's
harmless here.
2020-07-22 11:31:15 +02:00
Nikita Popov
9d2af91033
Only set DIT type on successful initialization
2020-07-17 16:42:56 +02:00
Nikita Popov
954244b3cb
Convert SPL fatal error to Error exception
2020-07-17 16:06:54 +02:00
Máté Kocsis
d30cd7d7e7
Review the usage of apostrophes in error messages
...
Closes GH-5590
2020-07-10 21:05:28 +02:00
Nikita Popov
302933daea
Remove no_separation flag
2020-07-07 09:30:24 +02:00
Nikita Popov
df8119d3e1
Don't allow separation in CallbackFilterIterator
...
As the name might suggest, this is a *filter* iterator. If you want
to have a *map* iterator, write one, or use a generator.
2020-07-07 09:04:20 +02:00
Max Semenik
2b5de6f839
Remove proto comments from C files
...
Closes GH-5758
2020-07-06 21:13:34 +02:00
Nikita Popov
312201dce4
Add get_gc handle for object iterators
...
Optional handler with the same semantics as the object handler.
2020-07-01 15:17:22 +02:00
Nikita Popov
f37138d2c5
Don't use iterator_funcs_ptr if it is null
...
This avoids ubsan warnings. Alternatively we could always initialize
iterator_funcs_ptr for aggregates, instead of doing so only for
non-internal ones.
2020-06-25 10:30:40 +02:00
Nikita Popov
15846ff115
Add ZVAL_OBJ_COPY macro
...
For the common ZVAL_OBJ + GC_ADDREF pattern.
This mirrors the existing ZVAL_STR_COPY API.
2020-06-17 16:36:56 +02:00
Nikita Popov
533669f7c4
Remove redundant addref+dtor
2020-04-29 10:27:35 +02:00
Máté Kocsis
d7f7080bb5
Generate methods entries from stubs for ext/spl
...
Closes GH-5458
2020-04-25 23:54:56 +02:00
Máté Kocsis
a42e8e8ec4
Add stubs for SPL iterators
...
Closes GH-5286
2020-03-24 08:02:27 +01:00
Nikita Popov
816a1fd4af
Don't use quiet zpp in RecursiveIteratorIterator ctor
...
Don't be a special snowflake, generate a standard TypeError here.
2020-03-23 14:22:51 +01:00
Nicolas Grekas
9e775db025
Define Stringable with __toString():string method
2020-03-02 15:25:32 +01:00
Nikita Popov
6811222422
Eliminate uses of ZVAL_ZVAL and friends
...
Instead add RETURN_COPY(_VALUE) macros will the expected behavior.
RETURN_ZVAL doesn't make any sense since PHP 7, but has stuck
around, probably because the alternative was to write directly to
the return_value variable.
2020-01-20 10:34:17 +01:00
Máté Kocsis
aadd3aaed9
Use RETURN_THROWS() in various places
2020-01-03 21:10:24 +01:00
Máté Kocsis
01a50778d1
Use RETURN_THROWS() after zend_throw_exception() in most of the extensions
2020-01-02 10:56:18 +01:00
Máté Kocsis
817605917b
Use RETURN_THROWS() during ZPP in the remaining extensions
...
In reflection, sodium, and SPL
2019-12-31 16:33:02 +01:00
Christoph M. Becker
4008704f62
zend_parse_parameters_throw() is obsolete
...
Since `zend_parse_parameters()` throws now, there is no reason to
explicitly call `zend_parse_parameters_throw()` anymore, and since both
have actually the same implementation, we redefine the latter as macro.
2019-11-01 16:47:15 +01:00
Máté Kocsis
9493893412
Cleanup return values when parameter parsing is unsuccessful
2019-10-30 16:05:20 +01:00
Gabriel Caruso
5d6e923d46
Remove mention of PHP major version in Copyright headers
...
Closes GH-4732.
2019-09-25 14:51:43 +02:00
Nikita Popov
2bfbb16ff2
Merge branch 'PHP-7.4'
2019-09-03 09:44:09 +02:00
Nikita Popov
5acedabfc0
Clarify failure behavior of spl_iterator_apply()
...
It only fails if it throws, in which case it is meaningless to
set a return value.
2019-09-03 09:43:22 +02:00
Nikita Popov
c413b1fca6
Remove bogus quieting in AppendIterator::append()
2019-06-17 11:46:23 +02:00
Dmitry Stogov
e029cc4dd4
Merge branch 'PHP-7.4'
...
* PHP-7.4:
Cheaper checks for exceptions thrown from __toString()
2019-06-06 02:23:17 +03:00
Dmitry Stogov
457392fa64
Cheaper checks for exceptions thrown from __toString()
2019-06-06 01:47:22 +03:00
Nikita Popov
7686b0b889
Merge branch 'PHP-7.4'
2019-06-05 14:53:50 +02:00
Nikita Popov
a31f46421d
Allow exceptions in __toString()
...
RFC: https://wiki.php.net/rfc/tostring_exceptions
And convert some object to string conversion related recoverable
fatal errors into Error exceptions.
Improve exception safety of internal code performing string
conversions.
2019-06-05 14:25:07 +02:00
Dmitry Stogov
b2cdde0826
Merge branch 'PHP-7.4'
...
* PHP-7.4:
Replace ZVAL_COPY() and ZVAL_COPY_VALUE() for IS_OBJECT by cheaper macros
2019-05-28 20:19:15 +03:00
Dmitry Stogov
83804519df
Replace ZVAL_COPY() and ZVAL_COPY_VALUE() for IS_OBJECT by cheaper macros
2019-05-28 20:10:02 +03:00
Nikita Popov
d7348cd2b4
Merge branch 'PHP-7.4'
2019-03-22 10:30:15 +01:00
Nikita Popov
e7e2056d1a
Remove HAVE_PCRE/HAVE_BUNDLED_PCRE checks
...
PCRE is always available.
2019-03-22 10:29:18 +01:00
Nikita Popov
e67d872e3e
Merge branch 'PHP-7.4'
2019-03-18 12:33:12 +01:00
Nikita Popov
275fa53564
Accept zend_string* instead of char* in php_pcre_match_impl()
2019-03-18 12:32:06 +01:00
Dmitry Stogov
f45e0ce928
Remove ZEND_OVERLOADED_FUNCTION and corresponding call_method object handler
2019-02-07 21:05:46 +03:00