From 22c9f6ebec3dbfe7395760da824ab50cce0f2a7d Mon Sep 17 00:00:00 2001
From: Marco Pivetta <ocramius@gmail.com>
Date: Thu, 9 May 2013 21:14:58 +0200
Subject: [PATCH] applying required fixes for DDC-2432

---
 lib/Doctrine/ORM/Proxy/ProxyFactory.php | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/lib/Doctrine/ORM/Proxy/ProxyFactory.php b/lib/Doctrine/ORM/Proxy/ProxyFactory.php
index c8964804e..dfac9a3e7 100644
--- a/lib/Doctrine/ORM/Proxy/ProxyFactory.php
+++ b/lib/Doctrine/ORM/Proxy/ProxyFactory.php
@@ -117,6 +117,9 @@ class ProxyFactory extends AbstractProxyFactory
     {
         if ($classMetadata->getReflectionClass()->hasMethod('__wakeup')) {
             return function (BaseProxy $proxy) use ($entityPersister, $classMetadata) {
+                $initializer = $proxy->__getInitializer();
+                $cloner      = $proxy->__getCloner();
+
                 $proxy->__setInitializer(null);
                 $proxy->__setCloner(null);
 
@@ -136,12 +139,19 @@ class ProxyFactory extends AbstractProxyFactory
                 $proxy->__wakeup();
 
                 if (null === $entityPersister->load($classMetadata->getIdentifierValues($proxy), $proxy)) {
+                    $proxy->__setInitializer($initializer);
+                    $proxy->__setCloner($cloner);
+                    $proxy->__setInitialized(false);
+
                     throw new EntityNotFoundException();
                 }
             };
         }
 
         return function (BaseProxy $proxy) use ($entityPersister, $classMetadata) {
+            $initializer = $proxy->__getInitializer();
+            $cloner      = $proxy->__getCloner();
+
             $proxy->__setInitializer(null);
             $proxy->__setCloner(null);
 
@@ -160,6 +170,10 @@ class ProxyFactory extends AbstractProxyFactory
             $proxy->__setInitialized(true);
 
             if (null === $entityPersister->load($classMetadata->getIdentifierValues($proxy), $proxy)) {
+                $proxy->__setInitializer($initializer);
+                $proxy->__setCloner($cloner);
+                $proxy->__setInitialized(false);
+
                 throw new EntityNotFoundException();
             }
         };