MSVC7 build fix due to a compiler bug with placement new and/or templates and casting.
authorkevino@webkit.org <kevino@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 7 Dec 2007 17:18:38 +0000 (17:18 +0000)
committerkevino@webkit.org <kevino@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 7 Dec 2007 17:18:38 +0000 (17:18 +0000)
Reviewed by Darin Adler.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@28517 268f45cc-cd09-0410-ab3c-d52691b4dbfc

JavaScriptCore/ChangeLog
JavaScriptCore/wtf/Vector.h

index 0a8a43de1b5f8c7004f7599c60f8d318e1f97383..62f71b8a20b783b2606d9036377a3329fdcdcf89 100644 (file)
@@ -1,3 +1,13 @@
+2007-12-06  Kevin Ollivier  <kevino@theolliviers.com>
+
+        MSVC7 build fix due to a compiler bug with placement new and/or
+        templates and casting.
+
+        Reviewed by Darin Adler.
+
+        * wtf/Vector.h:
+        (WTF::::append):
+
 2007-12-06  Darin Adler  <darin@apple.com>
 
         Reviewed by Eric Seidel.
index 308a51b24235d2aa4d6e5c7262528a8ac9a91d4a..f90dde3e8d2830250b74867495c70fbfa23fb1ef 100644 (file)
@@ -668,7 +668,18 @@ namespace WTF {
         const U* ptr = &val;
         if (size() == capacity())
             ptr = expandCapacity(size() + 1, ptr);
+            
+        // FIXME: MSVC7 generates compilation errors when trying to assign
+        // a pointer to a Vector of its base class (i.e. can't downcast). So far
+        // I've been unable to determine any logical reason for this, so I can
+        // only assume it is a bug with the compiler. Casting is very bad
+        // however because it subverts implicit conversions, so a better 
+        // solution is direly needed. 
+#if COMPILER(MSVC7)
+        new (end()) T(static_cast<T>(*ptr));
+#else
         new (end()) T(*ptr);
+#endif
         ++m_size;
     }