VC11 fails to build angle because oppl_allocator::operator= does not exist

ANGLEBUG=229
Signed-off-by: Nicolas Capens
Author: Ehsan Akhgari

git-svn-id: http://angleproject.googlecode.com/svn/trunk@798 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index 48f373d..0b1c618 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -41,3 +41,5 @@
 timeless

 Yore Apex

 Mark Callow

+Ehsan Akhgari

+

diff --git a/src/common/version.h b/src/common/version.h
index 32c9794..3b0fc36 100644
--- a/src/common/version.h
+++ b/src/common/version.h
@@ -1,7 +1,7 @@
 #define MAJOR_VERSION 0
 #define MINOR_VERSION 0
 #define BUILD_VERSION 0
-#define BUILD_REVISION 797
+#define BUILD_REVISION 798
 
 #define STRINGIFY(x) #x
 #define MACRO_STRINGIFY(x) STRINGIFY(x)
diff --git a/src/compiler/PoolAlloc.h b/src/compiler/PoolAlloc.h
index 55e09db..a8a59c6 100644
--- a/src/compiler/PoolAlloc.h
+++ b/src/compiler/PoolAlloc.h
@@ -253,12 +253,18 @@
     pointer address(reference x) const { return &x; }
     const_pointer address(const_reference x) const { return &x; }
 
-    pool_allocator() : allocator(GlobalPoolAllocator) { }
-    pool_allocator(TPoolAllocator& a) : allocator(a) { }
+    pool_allocator() : allocator(&GlobalPoolAllocator) { }
+    pool_allocator(TPoolAllocator& a) : allocator(&a) { }
     pool_allocator(const pool_allocator<T>& p) : allocator(p.allocator) { }
 
+    template <class Other>
+    pool_allocator<T>& operator=(const pool_allocator<Other>& p) {
+      allocator = p.allocator;
+      return *this;
+    }
+
     template<class Other>
-    pool_allocator(const pool_allocator<Other>& p) : allocator(p.getAllocator()) { }
+    pool_allocator(const pool_allocator<Other>& p) : allocator(&p.getAllocator()) { }
 
 #if defined(__SUNPRO_CC) && !defined(_RWSTD_ALLOCATOR)
     // libCStd on some platforms have a different allocate/deallocate interface.
@@ -290,11 +296,11 @@
     size_type max_size() const { return static_cast<size_type>(-1) / sizeof(T); }
     size_type max_size(int size) const { return static_cast<size_type>(-1) / size; }
 
-    void setAllocator(TPoolAllocator* a) { allocator = *a; }
-    TPoolAllocator& getAllocator() const { return allocator; }
+    void setAllocator(TPoolAllocator* a) { allocator = a; }
+    TPoolAllocator& getAllocator() const { return *allocator; }
 
 protected:
-    TPoolAllocator& allocator;
+    TPoolAllocator* allocator;
 };
 
 #endif // _POOLALLOC_INCLUDED_