Title: [163693] trunk/Source/WebCore
Revision
163693
Author
ddkil...@apple.com
Date
2014-02-07 21:33:05 -0800 (Fri, 07 Feb 2014)

Log Message

[ASan] Use new/delete in PODFreeListArena
<http://webkit.org/b/128437>

Reviewed by Oliver Hunt.

* platform/PODFreeListArena.h:
(WebCore::PODFreeListArena::allocateObject): Use new when
ADDRESS_SANITIZER is defined.
(WebCore::PODFreeListArena::freeObject): Use delete when
ADDRESS_SANITIZER is defined.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (163692 => 163693)


--- trunk/Source/WebCore/ChangeLog	2014-02-08 05:27:17 UTC (rev 163692)
+++ trunk/Source/WebCore/ChangeLog	2014-02-08 05:33:05 UTC (rev 163693)
@@ -1,3 +1,16 @@
+2014-02-07  David Kilzer  <ddkil...@apple.com>
+
+        [ASan] Use new/delete in PODFreeListArena
+        <http://webkit.org/b/128437>
+
+        Reviewed by Oliver Hunt.
+
+        * platform/PODFreeListArena.h:
+        (WebCore::PODFreeListArena::allocateObject): Use new when
+        ADDRESS_SANITIZER is defined.
+        (WebCore::PODFreeListArena::freeObject): Use delete when
+        ADDRESS_SANITIZER is defined.
+
 2014-02-07  Ryosuke Niwa  <rn...@webkit.org>
 
         Merge updateSelectionCachesIfSelectionIsInsideTextFormControl into setSelectionWithoutUpdatingAppearance

Modified: trunk/Source/WebCore/platform/PODFreeListArena.h (163692 => 163693)


--- trunk/Source/WebCore/platform/PODFreeListArena.h	2014-02-08 05:27:17 UTC (rev 163692)
+++ trunk/Source/WebCore/platform/PODFreeListArena.h	2014-02-08 05:33:05 UTC (rev 163693)
@@ -40,6 +40,9 @@
 
     template<class Argument1Type> T* allocateObject(const Argument1Type& argument1)
     {
+#if defined(ADDRESS_SANITIZER)
+        return new T(argument1);
+#else
         size_t roundedSize = roundUp(sizeof(T), minAlignment<T>());
         void* ptr = allocate(roundedSize);
         if (ptr) {
@@ -47,15 +50,20 @@
             new(ptr) T(argument1);
         }
         return static_cast<T*>(ptr);
+#endif
     }
 
     void freeObject(T* ptr)
     {
+#if defined(ADDRESS_SANITIZER)
+        delete ptr;
+#else
         for (typename Vector<OwnPtr<FreeListChunk>>::const_iterator it = m_chunks.begin(), end = m_chunks.end(); it != end; ++it) {
             FreeListChunk* chunk = static_cast<FreeListChunk*>(it->get());
             if (chunk->contains(ptr))
                 chunk->free(ptr);
         }
+#endif
     }
 
 private:
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to