fixed CS
[WIP][Locale] StubIntlDateFormatter::parse was throwing exception instead of returning Boolean false like intl implementation
[Routing] added a proper exception when a route pattern references the same variable more than once (closes #3344)
merged branch eriksencosta/ticket_2781 (PR #3350)

Commits
-------

beb4fc0 [WIP][Locale] StubIntlDateFormatter::parse was throwing exception instead of returning Boolean false like intl implementation
b61dff7 fixed CS

Discussion
----------

[WIP][Locale] StubIntlDateFormatter::parse was throwing exception instead of returning Boolean false like intl implementation

Bug fix: yes
Feature addition: no
Backwards compatibility break: no
Symfony2 tests pass: ![travis.ci](https://secure.travis-ci.org/eriksencosta/symfony.png?branch=ticket_2781)
Fixes the following tickets: #2781
Todo: A test fail in 32 bit environment, executed tests only with PHP 5.3.2 and ext-intl ICU 4.2 based

Failed test:

    1) Symfony\Tests\Component\Locale\Stub\StubIntlDateFormatterTest::testFormatWithDefaultTimezoneIntl
    Failed asserting that two strings are equal.
    --- Expected
    +++ Actual
    @@ @@
    -'1969-12-31 21:00:00'
    +'1969-12-31 16:00:00'
[Translation] Fixed fallback location if location is longer than three characters (possibly by mistake).
[MonologBundle] added missing class to compile
[Routing] Added a missing property declaration
merged branch kriswallsmith/monolog/missing-class (PR #3368)

Commits
-------

1cec4f5 [MonologBundle] added missing class to compile

Discussion
----------

[MonologBundle] added missing class to compile

`Symfony\Bridge\Monolog\Handler\DebugHandler` extends a class which was not being included in the compiled class file.

```
Bug fix: yes
Feature addition: no
Backwards compatibility break: no
Symfony2 tests pass: yes
Fixes the following tickets: ~
Todo: ~
```

---------------------------------------------------------------------------

by stof at 2012-02-15T14:27:29Z

@kriswallsmith Can you send the same PR to the standalone repo for 2.1 ?

---------------------------------------------------------------------------

by kriswallsmith at 2012-02-15T14:30:05Z

Can I just commit to that repository directly? /ping @Seldaek

---------------------------------------------------------------------------

by stof at 2012-02-15T14:33:51Z

yeah indeed, you have the needed permissions, and the change is OK
[Console] Fix wrong ref in phpdoc
merged branch adrienbrault/2.0 (PR #3386)

Commits
-------

ae8704c [Console] Fix wrong ref in phpdoc

Discussion
----------

[Console] Fix wrong ref in phpdoc

Bug fix: no
Feature addition: no
Backwards compatibility break: no
Symfony2 tests pass: yes
Fixes the following tickets: N/A
Todo: N/A

Hey guys, found that typo.
Updated LICENSE files copyright
merged branch marcw/patch-license-copyright (PR #3411)

Commits
-------

89868f7 Updated LICENSE files copyright

Discussion
----------

Updated LICENSE files copyright
[MonologBundle] Fixed a bug when adding a processor on a service handler
merged branch stof/fix_monolog_processor (PR #3418)

Commits
-------

d02ca25 [MonologBundle] Fixed a bug when adding a processor on a service handler

Discussion
----------

Fix monolog processor

This is the proper bugfix replacing #3417, and adding a test for it
Resolves issue with spl_autoload_register creating new copies of the container and passing that into the closure.
Finder - allow sorting when searching in multiple directories
fixed coding standards
[FrameworkBundle] Fix a bug in the RedirectableUrlMatcher
merged branch kriswallsmith/doctrine/proxy-loader-fix (PR #3419)

Commits
-------

6e75fd1 Resolves issue with spl_autoload_register creating new copies of the container and passing that into the closure.

Discussion
----------

[DoctrineBundle] fixed proxy loader memory leak

[![Build Status](https://secure.travis-ci.org/kriswallsmith/symfony.png?branch=doctrine/proxy-loader-fix)](http://travis-ci.org/kriswallsmith/symfony)

The hack for loading Doctrine proxy classes has an obscure memory leak, fixed here by @jjbohn.

## The Proof

Run this test case before and after this patch:

```php
<?php

namespace Kris\JunkBundle\Tests\Controller;

use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;

class DefaultControllerTest extends WebTestCase
{
    /**
     * @dataProvider asdf
     */
    public function testIndex()
    {
        $client = static::createClient();

        $crawler = $client->request('GET', '/hello/Fabien');

        $this->assertTrue($crawler->filter('html:contains("Hello Fabien")')->count() > 0);
    }

    public function asdf()
    {
        return array_fill(0, 500, array());
    }
}
```

### Before

```
~/Sites/symfony/standard (2.0) $ phpunit -c app/
PHPUnit 3.6.10 by Sebastian Bergmann.

Configuration read from /Users/kriswallsmith/Sites/symfony/standard/app/phpunit.xml.dist

...............................................................  63 / 500 ( 12%)
............................................................... 126 / 500 ( 25%)
............................................................... 189 / 500 ( 37%)
............................................................... 252 / 500 ( 50%)
............................................................... 315 / 500 ( 63%)
............................................................... 378 / 500 ( 75%)
............................................................... 441 / 500 ( 88%)
...........................................................

Time: 31 seconds, Memory: 289.50Mb

OK (500 tests, 500 assertions)
```

### After

```
~/Sites/symfony/standard (2.0) $ phpunit -c app/
PHPUnit 3.6.10 by Sebastian Bergmann.

Configuration read from /Users/kriswallsmith/Sites/symfony/standard/app/phpunit.xml.dist

...............................................................  63 / 500 ( 12%)
............................................................... 126 / 500 ( 25%)
............................................................... 189 / 500 ( 37%)
............................................................... 252 / 500 ( 50%)
............................................................... 315 / 500 ( 63%)
............................................................... 378 / 500 ( 75%)
............................................................... 441 / 500 ( 88%)
...........................................................

Time: 40 seconds, Memory: 51.25Mb

OK (500 tests, 500 assertions)
```

## tl;dr

Your test suite will use much less memory — 82% in this case.

```
Bug fix: no
Feature addition: no
Backwards compatibility break: no
Symfony2 tests pass: yes
Fixes the following tickets: -
Todo: -
```

---------------------------------------------------------------------------

by mvrhov at 2012-02-23T06:25:57Z

IMHO this change warrants a comment inside a source code as somebody might actually try to remove the first by reference assign like stof said.

---------------------------------------------------------------------------

by lsmith77 at 2012-02-23T07:55:48Z

this autoloader sounds like something we also need in the ODM's?

---------------------------------------------------------------------------

by stof at 2012-02-23T08:23:17Z

@lsmith77 if you want to allow unserializing proxies without forcing to generate them before (which would be an issue in debug mode), yeah. But take care that each Doctrine bundle should use a different proxy namespace to allow doing the check (there was some issues for people using both the ORM and the mongo ODM because of this)

---------------------------------------------------------------------------

by lsmith77 at 2012-02-23T08:24:33Z

then maybe this could should be a static method inside the bridge?

---------------------------------------------------------------------------

by beberlei at 2012-02-23T11:50:08Z

I think another side of this problem is that ->boot() ALWAYS adds this method on the autoloading stack. So with N tests you have N more autoloaders on the stack.

---------------------------------------------------------------------------

by pminnieur at 2012-02-23T12:07:00Z

This could be an issue if you use Symfony with Leach as an application server, too. After a while, memory is exhausted in face of `gc_collect_cycles` and `$kernel->boot()` and `$kernel->shutdown()` calls in between each request - which ultimately leads to a segfault after some time. I tried to track down what causes increasing memory usage and I think this could be the error.

---------------------------------------------------------------------------

by beberlei at 2012-02-23T12:28:06Z

its definately the problem, we need to remove the autoloader in shutdown, or move it elsewhere.

---------------------------------------------------------------------------

by lsmith77 at 2012-02-23T14:58:37Z

why isnt this just a setup task for the autoloader just like the annotation registry?

---------------------------------------------------------------------------

by stof at 2012-02-23T16:52:42Z

@lsmith77 because the proxy namespace and the proxy dir are not known in the autoload.php file. They are configured in the config files

---------------------------------------------------------------------------

by fabpot at 2012-02-23T18:05:51Z

The `shutdown()` method is where the autoloader should be removed. Can we include this in this PR as well so that we fix everything once and for all?

---------------------------------------------------------------------------

by kriswallsmith at 2012-02-23T19:12:05Z

The once and for all solution is for the Doctrine O*M projects to provide a ProxyLoader class with register and unregister methods that we call in boot and shutdown. We're not solving anything specific to Symfony here.
merged branch pcampr/patch-1 (PR #3439)

Commits
-------

15910a0 fixed coding standards
24a3cd3 Finder - allow sorting when searching in multiple directories

Discussion
----------

[Finder] not searching in multiple dirs with sorting

I hit on a problem with **Finder, when using array of directories passed to ->in() together with sorting** (e.g. ->sortByName()):

*Catchable Fatal Error: Argument 1 passed to AppendIterator::append() must implement interface Iterator, instance of Symfony\Component\Finder\Iterator\SortableIterator given in ......\vendor\symfony\src\Symfony\Component\Finder\Finder.php line 421*

The problem is in Finder.php, line 419. When more than 1 directory is used, \AppendIterator is used to merge iterators for each directory. AppendIterator->append() accepts only objects implementing Iterator interface. But this is broken for SortableIterator, which implements IteratorAggregate and NOT Iterator.

My proposed solution retrieves an Iterator from IteratorAggregate, which is later valid as an input to AppendIterator->append()

(This solved the exception mentioned aboved in my testing project, not tested more.)