While testing the GPU accelerated path rendering code, a memory leak was discovered and tracked down to the fact that the red/black tree was allocating its nodes using operator new directly rather than the arena class.
Created attachment 67063 [details] Patch From the ChangeLog: Fixed memory leak in red/black tree where it was using operator new directly to allocate its internal nodes rather than the arena with which it was configured. Added allocateObject variant to arena supporting single-argument constructors. Added test to red/black tree unit tests to cover this functionality, and refactored TrackedAllocator into helper file to share between arena and red/black tree tests.
Comment on attachment 67063 [details] Patch Suggestion: ad a private override for operator new on PODRedBlackTree::Node to avoid this sort of bug in the future.
(In reply to comment #2) > (From update of attachment 67063 [details]) > Suggestion: ad a private override for operator new on PODRedBlackTree::Node to avoid this sort of bug in the future. This is a good suggestion. I tried it, but unfortunately overriding "void* operator new(size_t size)" on this type prevents placement new from working for the type, which is used by the arena.
Committed r67099: <http://trac.webkit.org/changeset/67099>