Commit graph

10229 commits

Author SHA1 Message Date
Dmitry Stogov
4fd93a4da6 Converted fatal errors into EngineExceptions 2015-04-01 14:50:09 +03:00
Dmitry Stogov
18f3d5490a Convert fatal error into EngineException 2015-04-01 13:49:11 +03:00
Dmitry Stogov
1d75953a86 We don't need this protection anymore (now reference counting on closures is accurate). 2015-04-01 13:38:05 +03:00
Dmitry Stogov
acfc31c0f8 Use zend_error_noreturn() for fatal errors 2015-04-01 13:32:23 +03:00
Nikita Popov
085774997b Drop support for static calls from incompatible context
Implemented by NULLing $this.
2015-04-01 11:42:05 +02:00
Nikita Popov
8d00385871 Reclassify E_STRICT notices
Per RFC https://wiki.php.net/rfc/reclassify_e_strict

While reviewing this, found that there are still three E_STRICTs
left in libraries - need to discuss those.
2015-04-01 11:17:55 +02:00
Dmitry Stogov
4796e0242b Merge branch 'InternalClassClean'
* InternalClassClean:
  Fixed test
  Patch improvement:
  Fixed indentation. Fixed comment style. Fixed commented out code.
  Reverted change to function name and added note of why it is different from the class it is actually changing.
  Made UConverter throw an exception if the constructor fails.
  Fixed PDO constructor to not return null.
  Fixed fileinfo behaviour.
  Made Phar throw exception on bad constructor.
  Converted intl extension to use IntlException in constructors.
  Fixed SplFixedArray and tests.
  Fixed ReflectionExtension and ReflectionProperty.
  Fixed ReflectionFunction, ReflectionMethod and ReflectionParameter.
  Fixed PDORow behaviour and message.
2015-04-01 12:11:13 +03:00
Xinchen Hui
ed772e1a99 Fixed test 2015-04-01 09:56:55 +08:00
Dmitry Stogov
2bf8f29d16 Converted most object handlers fatal errors into EngineExceptions 2015-04-01 00:37:59 +03:00
Nikita Popov
6ef9216269 Finish PHP 4 constructor deprecation 2015-03-31 17:55:27 +02:00
Andrea Faulds
db76b708cf Deprecate PHP 4 constructors 2015-03-31 17:55:27 +02:00
Dmitry Stogov
685ab95add Convert fatal errors on improper access to static properties into EngineExceptions 2015-03-31 16:35:27 +03:00
Dmitry Stogov
e8672deefc Convert "Unsupported operands" fatal error into EngineException (exceptions can't be thrown at compile-time yet, so unsuported operands in constant expressions are still lead to fatal error). 2015-03-31 13:25:26 +03:00
Xinchen Hui
ceb77b6472 Revert "Better to taverse reversely"
This reverts commit 51451ab84a.
2015-03-31 16:52:30 +08:00
Xinchen Hui
d7835ee224 Using int32_t opposite of uint32_t 2015-03-31 12:40:29 +08:00
Nikita Popov
53a40386bc Implement additional type reservations
* The class names false, true and null are now reserved.
 * The code dealing with reserved class names is now decoupled
   from scalar type hint handling. It also includes self, parent,
   and static, which are class names which were already reserved
   previously.
 * Reuse existing messages for reserved class names.

Fallout: class_alias() can no longer alias self, parent and static.
However this never really worked in the first place, as the test
which was testing this shows.
2015-03-30 22:59:06 +02:00
Kalle Sommer Nielsen
607b7d662a Added missing zend_parse_parameters_none() to restore_error_handler() and restore_exception_handler() (Ferenc) 2015-03-30 17:57:32 +02:00
Dmitry Stogov
1018f462d8 Patch improvement:
Removed the corresponding core code.
Fixed ext/com_dotnet and ext/date.
Refactored ext/intl changes.
Improved ext/fileinfo and ext/pdo changes.
Fixed tests.
2015-03-30 18:53:38 +03:00
Xinchen Hui
51451ab84a Better to taverse reversely 2015-03-30 15:26:59 +08:00
Kalle Sommer Nielsen
313d01f30a Drop old VC support in Zend Engine, this also kills the remaining MessageBox fix for Windows 9x that Anatol changed a while back 2015-03-29 07:10:39 +02:00
Xinchen Hui
5c31c8c6e5 Fixed is_callable/function_exists with disable_functions 2015-03-28 17:07:11 +08:00
Xinchen Hui
e60b380c55 Merge branch 'bug69315' of https://github.com/laruence/php-src 2015-03-28 14:10:41 +08:00
Xinchen Hui
4328999d2c Merge branch 'master' of https://git.php.net/repository/php-src 2015-03-28 11:02:23 +08:00
Kalle Sommer Nielsen
8153286efe Drop zend_indent() as it was never used, complete or working 2015-03-27 20:04:46 +01:00
Nikita Popov
c64f5e3332 Disallow direct incdec of function return value
Matching PHP 5 behavior.

We may want to support this for by-reference returns, but that
requires implementing further checks.
2015-03-27 16:40:04 +01:00
Xinchen Hui
84d9426730 Fixed bug #69315 2015-03-27 17:50:36 +08:00
Xinchen Hui
4ef3f4e76a Useless comment 2015-03-26 13:50:43 +08:00
Kalle Sommer Nielsen
10e1b13ac5 Minor cosmetics for our test functions in the debug build 2015-03-26 02:03:55 +01:00
Kalle Sommer Nielsen
1c5994184f Added tests for the naming collision error message to handle all possible conditions 2015-03-26 01:59:23 +01:00
Kalle Sommer Nielsen
67b907f059 Change the error message for colliding class/interface/trait names to be a little more clearer.
C:\> php -r "interface stdClass { }"
  Error: Cannot declare interface stdClass, because the name is already in use in Command Line Code on line 1
2015-03-26 01:44:23 +01:00
Kalle Sommer Nielsen
02be73b5fa Constness to zend_get_object_type(), thanks Michael! 2015-03-25 07:01:04 +01:00
Kalle Sommer Nielsen
927d53fda4 Change "Cannot redeclare class X" into "Cannot redeclare class/interface/trait X", meaning that the following:
C:\> php -r "trait A { } trait A { }"

Will now properly print "Cannot redeclare trait A" instead of "Cannot redeclare class A" to make error messages a tiny bit clearer. Admittedly, a better solution can most likely be made by actually telling what the colliding object is a type of.

Internally this adds a new function:
 zend_get_object_type()
2015-03-25 06:31:11 +01:00
Dmitry Stogov
550b07ae1b cleanup 2015-03-25 01:57:05 +03:00
Anatol Belski
62b51668e2 ensure the test uses correct SAPI 2015-03-24 22:02:28 +01:00
Dmitry Stogov
0ce7b4c8c6 Removed unused functions 2015-03-24 23:40:20 +03:00
Dmitry Stogov
23c33b1483 Optimized strings concatenation.
ZEND_ADD_STRING/VAR/CHAR are replaced with ZEND_ROPE_INTI, ZEND_ROPE_ADD, ZEND_ROPE_END.
Instead of reallocation and copying string on each ZEND_ADD_STRING/VAR/CAHR, collect all the strings and then allocate and construct the resulting string once.
2015-03-24 22:47:21 +03:00
Dmitry Stogov
bdf7fc67d8 We can't stay zend_string->h to be zero, because it may lead to hash value recalculation and update.
But in general zend_string may be put and read-only memory, that would lead to crash.
Always set the high bit of hash_value to prevent recaclulation.
2015-03-24 16:28:26 +03:00
Nikita Popov
d659ee24ab Fix VERIFY_RETURN separation
a) The SAME_FAKE_TYPE check should always occur on the dereferenced
value, otherwise we'll end up separating large referenced arrays.
b) For by-val return with an rc=1 reference, the SEPARATE_ZVAL
wouldn't do anything. Add a ZVAL_UNREF for this case.

I don't like this fix - there must be some better way to express
this.
2015-03-24 10:51:28 +01:00
Dmitry Stogov
4be8d798b6 Add some assumptions. 2015-03-24 12:22:11 +03:00
Dmitry Stogov
e1ab2cfe1c Introduce ZEND_ASSUME() macro to help optimizing code.
Reuse ZEND_ASSERT() conditions for optimization.
2015-03-24 12:21:06 +03:00
Stanislav Malyshev
941989fa31 Merge branch 'pull-request/1186'
* pull-request/1186:
  Move check for __builtin_expect to configure
2015-03-22 21:11:43 -07:00
Nikita Popov
a34f81deee Allow adding return type during inheritance
This is allowed as per the return types RFC. The test for this
behavior happened to use an internal class without arginfo, which
is why this was not properly implemented.
2015-03-22 18:56:14 +01:00
Levi Morrison
017f89e871 Move check for __builtin_expect to configure
This allows __builtin_expect to be used more accurately
2015-03-22 10:31:14 -06:00
Nikita Popov
a50e9d87f2 Partially revert "Fix uninitialized value condition"
This reverts commit e874f76096,
which broke zpp quite mode.

Only the initialization of the "severity" variable is retained.
2015-03-22 09:25:32 +01:00
Nikita Popov
ccfd53886f Revert "Use E_ERROR | E_EXCEPTION in FAST_ZPP mode too"
This reverts commit d4da7c20d2.

The argument passed to this function refers to the weak mode
severity, strict mode will get an exception in any case.
2015-03-22 09:17:42 +01:00
Bob Weinand
d4da7c20d2 Use E_ERROR | E_EXCEPTION in FAST_ZPP mode too 2015-03-22 00:17:33 +01:00
Bob Weinand
e874f76096 Fix uninitialized value condition 2015-03-22 00:14:47 +01:00
Dmitry Stogov
1f408af03c Fixed in-place modification of IS_CONST operand 2015-03-21 00:22:25 +03:00
Dmitry Stogov
3a886a0c90 Changed SKIPIF messages 2015-03-20 23:19:51 +03:00
Dmitry Stogov
35f9b90bb8 ZPP changed to lazely check for "strict/weak" only if it's really necessary.
Cleanup.
2015-03-20 23:18:52 +03:00