Dmitry Stogov
41db5f73ce
Fixed reference-counting in zend_parse_arg_str_weak()
2018-07-06 03:11:20 +03:00
Dmitry Stogov
8361c0a9a7
Avoid useless checks in object_init()
2018-07-06 01:24:15 +03:00
Dmitry Stogov
4a475a4976
Replace legacy zval_dtor() by zval_ptr_dtor_nogc() or even more specialized destructors.
...
zval_dtor() doesn't make a lot of sense in PHP-7.* and it's used incorrectly in some places.
Its occurances should be replaced by zval_ptr_dtor() or zval_ptr_dtor_nogc(), or even more specialized destructors.
2018-07-04 19:22:24 +03:00
Dmitry Stogov
43aca3118a
Avoid string comparisons for magic methods (all magic methods start with "__")
2018-07-02 17:03:02 +03:00
Nikita Popov
7ac06d66d4
Add zend_update_static_property_ex API
...
And cleanup the implementation to perform a normal by-value
assignment.
2018-06-29 22:56:59 +02:00
Nikita Popov
813b6fc950
Add zend_read_static_property_ex API
...
For symmetry with zend_read_property_ex.
2018-06-29 22:49:15 +02:00
Dmitry Stogov
6e77a60a75
Removed INIT_OVERLOADED_CLASS... macros
2018-06-29 14:41:35 +03:00
Dmitry Stogov
6dc0cd868d
Fixed ZTS race condition (zend_class_entry->ce_flags of internal classes must not be modified, because internal class enties are shared between threads)
2018-06-27 12:33:20 +03:00
Dmitry Stogov
7f67513ca3
Lazy function copying from op_cache SHM into process memory
2018-06-25 19:53:58 +03:00
Dmitry Stogov
c8f355b12c
Micro-optimization
2018-06-25 17:32:13 +03:00
Nikita Popov
2543e61aed
Fixed bug #76509
...
In PHP static properties are shared between inheriting classes,
unless they are explicitly overwritten. However, because this
functionality was implemented using reference, it was possible
to break the implementation by reassigning the static property
reference.
This is fixed by switching the implementation from using references
to using INDIRECTs, which cannot be affected by userland code.
2018-06-25 15:04:09 +02:00
Dmitry Stogov
0b90cf85a6
Removed "dead" code (zend_hash_update() never fails)
2018-06-01 11:58:57 +03:00
Dmitry Stogov
d90c6f2443
Removed useless zval_ptr_dtor()
2018-05-29 17:58:06 +03:00
Dmitry Stogov
5eb1f92f31
Use zend_string_release_ex() instread of zend_string_release() in places, where we sure about string persistence.
2018-05-28 16:27:12 +03:00
Anatol Belski
bcb1dbf6e4
Merge branch 'PHP-7.2'
...
* PHP-7.2:
Fixed bug #76337
2018-05-20 13:33:46 +02:00
xKhorasan
5681f6523b
Fixed bug #76337
2018-05-20 13:33:03 +02:00
Dmitry Stogov
524f5245c5
Avoid useless checks, using zend_string_efree(), in cases where the string is known to be a temporary allocated zend_string.
2018-05-08 17:30:15 +03:00
Dmitry Stogov
fdb347a753
zend_is_callable() improvement
2018-05-03 19:25:53 +03:00
Nikita Popov
32692bb083
Merge branch 'PHP-7.2'
2018-04-26 16:17:23 +02:00
Nikita Popov
7c852a7961
Merge branch 'PHP-7.1' into PHP-7.2
2018-04-26 16:17:13 +02:00
shiguangqi2008@gmail.com
98ef183ed0
Fix memory leak in zend_disable_class()
2018-04-26 16:16:37 +02:00
Gabriel Caruso
d0ee2a8254
Add is_countable function
...
RFC: https://wiki.php.net/rfc/is-countable
2018-03-11 16:41:16 +01:00
Dmitry Stogov
7e329a82c7
Improved ZPP to reduce amount of generated code.
2018-02-16 11:37:20 +03:00
Gabriel Caruso
fef879a2d6
Use bool instead of boolean while throwing a type error
...
PHP requires boolean typehints to be written "bool" and disallows
"boolean" as an alias. This changes the error messages to match
the actual type name and avoids confusing messages like "must be
of type boolean, boolean given".
This a followup to ce1d69a1f6
, which
implements the same change for integer->int.
2018-02-04 23:09:40 +01:00
Gabriel Caruso
ce1d69a1f6
Use int instead of integer in type errors
...
PHP requires integer typehints to be written "int" and does not
allow "integer" as an alias. This changes type error messages to
match the actual type name and avoids confusing messages like
"must be of the type integer, integer given".
2018-02-04 19:08:23 +01:00
Dmitry Stogov
5c77bac9a7
A cheaper way to reset type flags.
2018-01-17 01:58:51 +03:00
Dmitry Stogov
c32d79b65f
cleanup
2018-01-10 12:03:04 +03:00
Gabriel Caruso
6400264856
Trailing whitespaces
...
Signed-off-by: Gabriel Caruso <carusogabriel34@gmail.com>
2018-01-03 14:38:00 +01:00
Xinchen Hui
a6519d0514
year++
2018-01-02 12:57:58 +08:00
Xinchen Hui
7a7ec01a49
year++
2018-01-02 12:55:14 +08:00
Xinchen Hui
ccd4716ec7
year++
2018-01-02 12:53:31 +08:00
Dmitry Stogov
d9f5ea691f
zend_fcall_info_cache.initialized is removed (zend_fcall_info_cache is initialized if zend_fcall_info_cache.function_handler is set).
2017-12-27 15:15:03 +03:00
Dmitry Stogov
a6fcbb7c87
Use zend_hash_find() instead of zend_hash_find_ptr() to avoid double check
2017-12-27 13:26:06 +03:00
Nikita Popov
b2b2b437af
Add _IS_NUMBER as cast_object() target type
...
convert_scalar_to_number() will now call cast_object() with an
_IS_NUMBER argument, in which case the cast handler should return
either an integer or floating point number, whichever is more
appropriate.
Previously convert_scalar_to_number() unconditionally converted
objects to integers instead.
Fixes bug #53033 .
Fixes bug #54973 .
Fixes bug #73108 .
2017-12-26 12:39:06 +01:00
Nikita Popov
76a001e32a
Merge branch 'PHP-7.2'
2017-12-13 21:25:38 +01:00
Nikita Popov
652d30acdc
Merge branch 'PHP-7.1' into PHP-7.2
2017-12-13 21:25:21 +01:00
Levi Morrison
580bae4a2c
Fix copy-and-paste bugs
2017-12-13 21:25:00 +01:00
Dmitry Stogov
6a9d2b2190
Cleanup type conversion
2017-12-07 19:24:55 +03:00
Dmitry Stogov
134248164c
Only functions of temporary modules have to be unregistered here
2017-11-30 11:40:52 +03:00
Dmitry Stogov
084c17fe0b
Use zend_string_tolower() where it's possible (to avoid reallocations).
...
Allow zend_string_tolower_ex() to create parsistent strings
2017-11-30 01:13:39 +03:00
Nikita Popov
8795893f4f
Make sure string property/class const values are interned
...
This was done for user-definde class constant values, however this
is also important for properties and internal classes.
2017-11-25 17:12:37 +01:00
Xinchen Hui
d56a534acc
RC manipulation cleanup 2
2017-11-02 12:13:35 +08:00
Nikita Popov
cb2884679c
Remove zend_get_parameters(_ex) APIs
...
zend_get_parameters_ex() has been marked as deprecated for a long
time already. What zend_get_paramers() does is even more
questionable under PHP7. Both functions are obsoleted by the ZPP
mechanism, so I'm dropping them.
2017-10-30 22:00:42 +01:00
Dmitry Stogov
fcc08ce19f
Prevent reference-counting on persistent zvals (internal constants, default properties and constants of internal classes).
...
New macro ZVAL_COPY_OR_DUP() is used perform duplication, if necessary.
This should eliminate related race-coditions in ZTS build and prevent reference-counting bugs after unclean shutdown.
2017-10-30 23:13:10 +03:00
Dmitry Stogov
8e01026b82
Extend zend_register_class_alias_ex() with additional argument to allow creating persistent or per-request aliases
2017-10-27 14:44:21 +03:00
Dmitry Stogov
272f5a1716
Extend zend_string API to avoid reallocation in zend_string_init_interned()
2017-10-19 00:02:56 +03:00
Dmitry Stogov
ef5ea48741
Always use IS_CONSTANT_AST (IS_CONSTANT is removed).
2017-10-10 10:11:05 +03:00
Joe Watkins
e2e3c981b5
Merge branch 'PHP-7.2'
...
* PHP-7.2:
Fixed #75220 - Segfault when calling is_callable on parent
2017-09-27 06:09:24 +01:00
Joe Watkins
0d6c56a8ea
Merge branch 'PHP-7.1' into PHP-7.2
...
* PHP-7.1:
Fixed #75220 - Segfault when calling is_callable on parent
2017-09-27 06:08:49 +01:00
Joe Watkins
2dd77456fe
Merge branch 'PHP-7.0' into PHP-7.1
...
* PHP-7.0:
Fixed #75220 - Segfault when calling is_callable on parent
2017-09-27 06:08:01 +01:00