Title: [149684] trunk/Source/WebCore
- Revision
- 149684
- Author
- [email protected]
- Date
- 2013-05-07 11:42:52 -0700 (Tue, 07 May 2013)
Log Message
Use OwnPtr instead of deleteAllValues in SVGResourcesCache
https://bugs.webkit.org/show_bug.cgi?id=115729
Reviewed by Benjamin Poulain.
* rendering/svg/SVGResourcesCache.cpp:
(WebCore::SVGResourcesCache::~SVGResourcesCache): Removed call to deleteAllValues.
(WebCore::SVGResourcesCache::addResourcesFromRenderObject): Use adoptPtr and release
to create new SVGResources object.
(WebCore::SVGResourcesCache::removeResourcesFromRenderObject): Use take to remove
the SVGResources from the map rather than a get combined with delete/take.
(WebCore::SVGResourcesCache::cachedResourcesForRenderObject): Removed unneeded
call to contains, since get already returns 0 if there is no item in the map.
(WebCore::SVGResourcesCache::resourceDestroyed): Use typedef for the map type so
we don't have to repeat the type.
* rendering/svg/SVGResourcesCache.h: Added typedef CacheMap, and changed value
type to OwnPtr.
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (149683 => 149684)
--- trunk/Source/WebCore/ChangeLog 2013-05-07 18:30:19 UTC (rev 149683)
+++ trunk/Source/WebCore/ChangeLog 2013-05-07 18:42:52 UTC (rev 149684)
@@ -1,3 +1,24 @@
+2013-05-07 Darin Adler <[email protected]>
+
+ Use OwnPtr instead of deleteAllValues in SVGResourcesCache
+ https://bugs.webkit.org/show_bug.cgi?id=115729
+
+ Reviewed by Benjamin Poulain.
+
+ * rendering/svg/SVGResourcesCache.cpp:
+ (WebCore::SVGResourcesCache::~SVGResourcesCache): Removed call to deleteAllValues.
+ (WebCore::SVGResourcesCache::addResourcesFromRenderObject): Use adoptPtr and release
+ to create new SVGResources object.
+ (WebCore::SVGResourcesCache::removeResourcesFromRenderObject): Use take to remove
+ the SVGResources from the map rather than a get combined with delete/take.
+ (WebCore::SVGResourcesCache::cachedResourcesForRenderObject): Removed unneeded
+ call to contains, since get already returns 0 if there is no item in the map.
+ (WebCore::SVGResourcesCache::resourceDestroyed): Use typedef for the map type so
+ we don't have to repeat the type.
+
+ * rendering/svg/SVGResourcesCache.h: Added typedef CacheMap, and changed value
+ type to OwnPtr.
+
2013-05-07 Anders Carlsson <[email protected]>
REGRESSION(r149647): Assertion failure in LocalStorageDatabaseTracker::setLocalStorageDirectoryInternal
Modified: trunk/Source/WebCore/rendering/svg/SVGResourcesCache.cpp (149683 => 149684)
--- trunk/Source/WebCore/rendering/svg/SVGResourcesCache.cpp 2013-05-07 18:30:19 UTC (rev 149683)
+++ trunk/Source/WebCore/rendering/svg/SVGResourcesCache.cpp 2013-05-07 18:42:52 UTC (rev 149684)
@@ -36,7 +36,6 @@
SVGResourcesCache::~SVGResourcesCache()
{
- deleteAllValues(m_cache);
}
void SVGResourcesCache::addResourcesFromRenderObject(RenderObject* object, const RenderStyle* style)
@@ -49,14 +48,12 @@
ASSERT(svgStyle);
// Build a list of all resources associated with the passed RenderObject
- SVGResources* resources = new SVGResources;
- if (!resources->buildCachedResources(object, svgStyle)) {
- delete resources;
+ OwnPtr<SVGResources> newResources = adoptPtr(new SVGResources);
+ if (!newResources->buildCachedResources(object, svgStyle))
return;
- }
// Put object in cache.
- m_cache.set(object, resources);
+ SVGResources* resources = m_cache.set(object, newResources.release()).iterator->value.get();
// Run cycle-detection _afterwards_, so self-references can be caught as well.
SVGResourcesCycleSolver solver(object, resources);
@@ -76,7 +73,7 @@
if (!m_cache.contains(object))
return;
- SVGResources* resources = m_cache.get(object);
+ OwnPtr<SVGResources> resources = m_cache.take(object);
// Walk resources and register the render object at each resources.
HashSet<RenderSVGResourceContainer*> resourceSet;
@@ -85,8 +82,6 @@
HashSet<RenderSVGResourceContainer*>::iterator end = resourceSet.end();
for (HashSet<RenderSVGResourceContainer*>::iterator it = resourceSet.begin(); it != end; ++it)
(*it)->removeClient(object);
-
- delete m_cache.take(object);
}
static inline SVGResourcesCache* resourcesCacheFromRenderObject(const RenderObject* renderer)
@@ -106,11 +101,7 @@
SVGResources* SVGResourcesCache::cachedResourcesForRenderObject(const RenderObject* renderer)
{
ASSERT(renderer);
- SVGResourcesCache* cache = resourcesCacheFromRenderObject(renderer);
- if (!cache->m_cache.contains(renderer))
- return 0;
-
- return cache->m_cache.get(renderer);
+ return resourcesCacheFromRenderObject(renderer)->m_cache.get(renderer);
}
void SVGResourcesCache::clientLayoutChanged(RenderObject* object)
@@ -200,8 +191,8 @@
// The resource itself may have clients, that need to be notified.
cache->removeResourcesFromRenderObject(resource);
- HashMap<const RenderObject*, SVGResources*>::iterator end = cache->m_cache.end();
- for (HashMap<const RenderObject*, SVGResources*>::iterator it = cache->m_cache.begin(); it != end; ++it) {
+ CacheMap::iterator end = cache->m_cache.end();
+ for (CacheMap::iterator it = cache->m_cache.begin(); it != end; ++it) {
it->value->resourceDestroyed(resource);
// Mark users of destroyed resources as pending resolution based on the id of the old resource.
Modified: trunk/Source/WebCore/rendering/svg/SVGResourcesCache.h (149683 => 149684)
--- trunk/Source/WebCore/rendering/svg/SVGResourcesCache.h 2013-05-07 18:30:19 UTC (rev 149683)
+++ trunk/Source/WebCore/rendering/svg/SVGResourcesCache.h 2013-05-07 18:42:52 UTC (rev 149684)
@@ -23,6 +23,7 @@
#if ENABLE(SVG)
#include "RenderStyleConstants.h"
#include <wtf/HashMap.h>
+#include <wtf/OwnPtr.h>
namespace WebCore {
@@ -61,7 +62,8 @@
void addResourcesFromRenderObject(RenderObject*, const RenderStyle*);
void removeResourcesFromRenderObject(RenderObject*);
- HashMap<const RenderObject*, SVGResources*> m_cache;
+ typedef HashMap<const RenderObject*, OwnPtr<SVGResources> > CacheMap;
+ CacheMap m_cache;
};
}
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes