https://bugs.webkit.org/show_bug.cgi?id=61812
authordslomov@google.com <dslomov@google.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 4 Aug 2011 17:52:20 +0000 (17:52 +0000)
committerdslomov@google.com <dslomov@google.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 4 Aug 2011 17:52:20 +0000 (17:52 +0000)
        TestWebKitApi breaks in release mode due to gtest incompatibility with fast malloc

        Disable fast malloc for offending class (::std::strstream) in gtest.
        This looks like the most non-intrusive solution.

        Reviewed by David Levin.

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

Source/ThirdParty/ChangeLog
Source/ThirdParty/gtest/include/gtest/internal/gtest-port.h

index 3dfcf1e..169129b 100644 (file)
@@ -1,3 +1,19 @@
+2011-08-03  Dmitry Lomov  <dslomov@google.com>
+
+        https://bugs.webkit.org/show_bug.cgi?id=61812
+        TestWebKitApi breaks in release mode due to gtest incompatibility with fast malloc
+
+        Disable fast malloc for offending class (::std::strstream) in gtest.
+        This looks like the most non-intrusive solution.
+
+        Reviewed by David Levin.
+
+        * gtest/include/gtest/internal/gtest-port.h:
+        (testing::internal::StrStream::operator new):
+        (testing::internal::StrStream::operator new[]):
+        (testing::internal::StrStream::operator delete):
+        (testing::internal::StrStream::operator delete[]):
+
 2011-07-05  Adam Barth  <abarth@webkit.org>
 
         Import qunit JavaScript unit testing framework
index a2a62be..7924437 100644 (file)
@@ -609,7 +609,29 @@ namespace internal {
 
 class String;
 
-typedef ::std::stringstream StrStream;
+class StrStream : public ::std::stringstream {
+ public:
+  void* operator new(size_t, void* p) { return p; }
+  void* operator new[](size_t, void* p) { return p; }
+
+  void* operator new(size_t size) {
+    return malloc(size);
+  }
+
+  void operator delete(void* p) {
+    free(p);
+  }
+
+  void* operator new[](size_t size) {
+    return malloc(size);
+  }
+
+  void operator delete[](void* p) {
+    free(p);
+  }
+};
+
+
 
 // A helper for suppressing warnings on constant condition.  It just
 // returns 'condition'.