Compare commits

...

19 Commits

Author SHA1 Message Date
Nicolas Grekas
62a68f6404 Merge branch '2.7' into 2.8
* 2.7:
  [Debug] Remove GLOBALS from exception context to avoid endless recursion
2016-11-15 07:53:17 -05:00
Nicolas Grekas
a9844f3cd2 bug #20519 [Debug] Remove GLOBALS from exception context to avoid endless recursion (Seldaek)
This PR was merged into the 2.7 branch.

Discussion
----------

[Debug] Remove GLOBALS from exception context to avoid endless recursion

| Q             | A
| ------------- | ---
| Branch?       | 2.7
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| License       | MIT

This fixes a endless recursion as seen in https://github.com/felixfbecker/php-language-server/pull/137 - it only happens if you trigger an error in the global context so it's kinda hard to write a test for, but hopefully the fix can be accepted.

Commits
-------

1bb95ac [Debug] Remove GLOBALS from exception context to avoid endless recursion
2016-11-15 07:52:31 -05:00
Jordi Boggiano
0a8d55717a [Debug] Remove GLOBALS from exception context to avoid endless recursion 2016-11-15 13:37:17 +01:00
Nicolas Grekas
d99867cf7b Merge branch '2.7' into 2.8
* 2.7:
  CS fixes
  Remove trailing space
  CS: apply rules
  [Yaml] Clean some messages + add test case
  [Form] Fix UrlType transforms valid protocols
  [SecurityBundle] Changed encoder configuration example to bcrypt
2016-11-03 08:52:58 +01:00
Dariusz Ruminski
6945a0d019 CS: apply rules 2016-11-03 08:44:53 +01:00
Nicolas Grekas
8c29235936 Merge branch '2.7' into 2.8
* 2.7:
  [FrameworkBundle] Check for class existence before is_subclass_of
  Update GroupSequence.php
  Code enhancement and cleanup
  [DI] Add anti-regression test
  Revert "minor #19689 [DI] Cleanup array_key_exists (ro0NL)"
  [BrowserKit] Fix cookie expiration on 32 bit systems
  bumped Symfony version to 2.7.18
  updated VERSION for 2.7.17
  update CONTRIBUTORS for 2.7.17
  updated CHANGELOG for 2.7.17
  Update misleading comment about RFC4627
2016-09-06 12:55:00 +02:00
Yonel Ceruto
659f346c4a Code enhancement and cleanup 2016-09-06 09:26:07 +02:00
Nicolas Grekas
316b203b51 Merge branch '2.7' into 2.8
* 2.7:
  [ClassLoader] Fix tests
  [Debug][HttpKernel][VarDumper] Prepare for committed 7.2 changes
  [DependencyInjection] PhpDumper::isFrozen inconsistency
  [DI] Cleanup array_key_exists
  include dynamic services in list of alternatives
  [Debug] Swap dumper services at bootstrap
2016-08-23 15:37:31 +02:00
Nicolas Grekas
aec192ddd4 [Debug][HttpKernel][VarDumper] Prepare for committed 7.2 changes 2016-08-22 19:42:59 +02:00
Nicolas Grekas
6041920341 Merge branch '2.7' into 2.8
* 2.7:
  Disable CLI color for Windows 10 greater than 10.0.10586
  Exception details break the layout
  [HttpKernel] Remove wrong docblock
  [HttpKernel] Fix HttpCache validation HTTP method
  Move space from the before 'if' to the after 'if'
  [TwigBundle] Add a check for choice's attributes emptiness before calling block('attributes')
2016-08-19 08:48:01 +02:00
Dionysis Arvanitis
a3a850315e Exception details break the layout 2016-08-18 21:55:40 +03:00
Fabien Potencier
f7c5256f43 Merge branch '2.7' into 2.8
* 2.7:
  Minor fixes
  [Console] Overcomplete argument exception message tweak.
2016-07-30 03:20:35 -04:00
Vyacheslav Pavlov
31106b58d5 Minor fixes 2016-07-30 03:17:26 -04:00
Nicolas Grekas
bec6ab977e Merge branch '2.7' into 2.8
* 2.7:
  [Console] Application update PHPDoc of add and register methods
  [Config] Extra tests for Config component
  Fixed bugs in names of classes and methods.
  [DoctrineBridge] Fixed php doc
  [FrameworkBundle] Fixed parameters number mismatch declaration
  [BrowserKit] Added test for followRedirect method (POST method)
  Fix the money form type render with Bootstrap3
  [BrowserKit] Uppercase the "GET" method in redirects
  [WebProfilerBundle] Fixed  JSDoc parameter definition
  [HttpFoundation] HttpCache refresh stale responses containing an ETag

Conflicts:
	src/Symfony/Component/BrowserKit/Tests/ClientTest.php
	src/Symfony/Component/Security/Acl/Resources/bin/generateSql.php
2016-07-26 10:02:44 +02:00
Vyacheslav Pavlov
13ebf897a8 Fixed bugs in names of classes and methods. 2016-07-26 06:40:54 +02:00
Fabien Potencier
2477199ad1 Merge branch '2.7' into 2.8
* 2.7:
  removed dots at the end of @param and @return
  fixed typo
2016-06-29 07:29:29 +02:00
Fabien Potencier
d9e18587ad removed dots at the end of @param and @return 2016-06-28 08:24:06 +02:00
Fabien Potencier
c7d6d8a599 Merge branch '2.7' into 2.8
* 2.7:
  [BrowserKit] Bump dom-crawler minimum version requirement
  Make one call to "OutputInterface::write" method per table row
  [HttpKernel] Fix context dependent test
  [Debug] Fix context dependent test
2016-06-06 17:06:25 +02:00
Nicolas Grekas
00f654c530 [Debug] Fix context dependent test 2016-06-06 13:49:15 +02:00
10 changed files with 31 additions and 29 deletions

View File

@@ -375,12 +375,14 @@ class ErrorHandler
/**
* Handles errors by filtering then logging them according to the configured bit fields.
*
* @param int $type One of the E_* constants
* @param int $type One of the E_* constants
* @param string $message
* @param string $file
* @param int $line
* @param array $context
* @param array $backtrace
*
* @return bool Returns false when no handling happens so that the PHP engine can handle the error itself.
* @return bool Returns false when no handling happens so that the PHP engine can handle the error itself
*
* @throws \ErrorException When $this->thrownErrors requests so
*
@@ -397,7 +399,7 @@ class ErrorHandler
return $type && $log;
}
if (PHP_VERSION_ID < 50400 && isset($context['GLOBALS']) && ($this->scopedErrors & $type)) {
if (isset($context['GLOBALS']) && ($this->scopedErrors & $type)) {
$e = $context; // Whatever the signature of the method,
unset($e['GLOBALS'], $context); // $context is always a reference in 5.3
$context = $e;

View File

@@ -263,7 +263,10 @@ class FlattenException extends LegacyFlattenException
if (++$count > 1e4) {
return array('array', '*SKIPPED over 10000 entries*');
}
if (is_object($value)) {
if ($value instanceof \__PHP_Incomplete_Class) {
// is_object() returns false on PHP<=7.1
$result[$key] = array('incomplete-object', $this->getClassNameFromIncomplete($value));
} elseif (is_object($value)) {
$result[$key] = array('object', get_class($value));
} elseif (is_array($value)) {
if ($level > 10) {
@@ -277,9 +280,6 @@ class FlattenException extends LegacyFlattenException
$result[$key] = array('boolean', $value);
} elseif (is_resource($value)) {
$result[$key] = array('resource', get_resource_type($value));
} elseif ($value instanceof \__PHP_Incomplete_Class) {
// Special case of object, is_object will return false
$result[$key] = array('incomplete-object', $this->getClassNameFromIncomplete($value));
} else {
$result[$key] = array('string', (string) $value);
}

View File

@@ -96,7 +96,7 @@ class ExceptionHandler
*
* @param string $format The format for links to source files
*
* @return string The previous file link format.
* @return string The previous file link format
*/
public function setFileLinkFormat($format)
{
@@ -342,6 +342,7 @@ EOF;
border-bottom:1px solid #ccc;
border-right:1px solid #ccc;
border-left:1px solid #ccc;
word-wrap: break-word;
}
.sf-reset .block_exception { background-color:#ddd; color: #333; padding:20px;
-webkit-border-top-left-radius: 16px;

View File

@@ -1,14 +1,14 @@
--TEST--
Test symfony_zval_info API
--SKIPIF--
<?php if (!extension_loaded("symfony_debug")) print "skip"; ?>
<?php if (!extension_loaded('symfony_debug')) print 'skip'; ?>
--FILE--
<?php
$int = 42;
$float = 42.42;
$str = "foobar";
$object = new StdClass;
$str = 'foobar';
$object = new StdClass();
$array = array('foo', 'bar');
$resource = tmpfile();
$null = null;
@@ -17,15 +17,17 @@ $bool = true;
$anotherint = 42;
$refcount2 = &$anotherint;
$var = array('int' => $int,
'float' => $float,
'str' => $str,
'object' => $object,
'array' => $array,
'resource' => $resource,
'null' => $null,
'bool' => $bool,
'refcount' => &$refcount2);
$var = array(
'int' => $int,
'float' => $float,
'str' => $str,
'object' => $object,
'array' => $array,
'resource' => $resource,
'null' => $null,
'bool' => $bool,
'refcount' => &$refcount2,
);
var_dump(symfony_zval_info('int', $var));
var_dump(symfony_zval_info('float', $var));

View File

@@ -1,7 +1,7 @@
--TEST--
Test symfony_debug_backtrace in case of fatal error
--SKIPIF--
<?php if (!extension_loaded("symfony_debug")) print "skip"; ?>
<?php if (!extension_loaded('symfony_debug')) print 'skip'; ?>
--FILE--
<?php
@@ -18,7 +18,6 @@ function foo()
function bt()
{
print_r(symfony_debug_backtrace());
}
register_shutdown_function('bt');

View File

@@ -1,7 +1,7 @@
--TEST--
Test symfony_debug_backtrace in case of non fatal error
--SKIPIF--
<?php if (!extension_loaded("symfony_debug")) print "skip"; ?>
<?php if (!extension_loaded('symfony_debug')) print 'skip'; ?>
--FILE--
<?php
@@ -13,7 +13,6 @@ function bar()
function bt()
{
print_r(symfony_debug_backtrace());
}
bar();

View File

@@ -1,7 +1,7 @@
--TEST--
Test ErrorHandler in case of fatal error
--SKIPIF--
<?php if (!extension_loaded("symfony_debug")) print "skip"; ?>
<?php if (!extension_loaded('symfony_debug')) print 'skip'; ?>
--FILE--
<?php

View File

@@ -13,12 +13,11 @@ namespace Symfony\Component\Debug\Tests;
use Symfony\Component\Debug\DebugClassLoader;
use Symfony\Component\Debug\ErrorHandler;
use Symfony\Component\Debug\Exception\ContextErrorException;
class DebugClassLoaderTest extends \PHPUnit_Framework_TestCase
{
/**
* @var int Error reporting level before running tests.
* @var int Error reporting level before running tests
*/
private $errorReporting;

View File

@@ -499,7 +499,7 @@ class ErrorHandlerTest extends \PHPUnit_Framework_TestCase
$handler->handleException($exception);
$this->assertInstanceOf('Symfony\Component\Debug\Exception\ClassNotFoundException', $args[0]);
$this->assertSame("Attempted to load class \"Foo\" from the global namespace.\nDid you forget a \"use\" statement?", $args[0]->getMessage());
$this->assertStringStartsWith("Attempted to load class \"Foo\" from the global namespace.\nDid you forget a \"use\" statement", $args[0]->getMessage());
}
public function testHandleFatalErrorOnHHVM()

View File

@@ -13,7 +13,7 @@ namespace Symfony\Component\Debug\Tests;
use Symfony\Component\Debug\ExceptionHandler;
class MockExceptionHandler extends Exceptionhandler
class MockExceptionHandler extends ExceptionHandler
{
public $e;