<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[184734] trunk/Source/WebCore</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/184734">184734</a></dd>
<dt>Author</dt> <dd>jacob_nielsen@apple.com</dd>
<dt>Date</dt> <dd>2015-05-21 15:45:13 -0700 (Thu, 21 May 2015)</dd>
</dl>
<h3>Log Message</h3>
<pre><a href="http://trac.webkit.org/projects/webkit/changeset/184718">r184718</a> and <a href="http://trac.webkit.org/projects/webkit/changeset/184725">r184725</a> caused four tests to begin crashing
Unreviewed rollback.
Tests that started crashing:
svg/carto.net/textbox.svg svg/custom/tref-clone-crash.html svg/custom/use-animation-in-fill.html svg/custom/use-multiple-on-nested-disallowed-font.html
* svg/SVGAnimateElementBase.cpp:
(WebCore::propertyTypesAreConsistent):
* svg/SVGAnimatedPath.cpp:
(WebCore::SVGAnimatedPathAnimator::startAnimValAnimation):
* svg/SVGAnimatedTypeAnimator.h:
(WebCore::SVGAnimatedTypeAnimator::executeAction):
* svg/SVGAnimationElement.cpp:
(WebCore::SVGAnimationElement::parseAttribute):
* svg/SVGCursorElement.cpp:
(WebCore::SVGCursorElement::~SVGCursorElement):
(WebCore::SVGCursorElement::isSupportedAttribute):
* svg/SVGDocumentExtensions.cpp:
(WebCore::SVGDocumentExtensions::pauseAnimations):
(WebCore::SVGDocumentExtensions::unpauseAnimations):
(WebCore::SVGDocumentExtensions::dispatchSVGLoadEventToOutermostSVGElements):
(WebCore::SVGDocumentExtensions::isElementWithPendingResources):
(WebCore::SVGDocumentExtensions::removeElementFromPendingResources):
(WebCore::SVGDocumentExtensions::removeAllTargetReferencesForElement):
(WebCore::SVGDocumentExtensions::rebuildElements):
* svg/SVGElement.cpp:
(WebCore::populateAttributeNameToCSSPropertyIDMap):
(WebCore::populateAttributeNameToAnimatedPropertyTypeMap):
(WebCore::attributeNameToAnimatedPropertyTypeMap):
(WebCore::populateCSSPropertyWithSVGDOMNameToAnimatedPropertyTypeMap):
(WebCore::cssPropertyWithSVGDOMNameToAnimatedPropertyTypeMap):
(WebCore::hasLoadListener):
* svg/SVGFontData.cpp:
(WebCore::SVGFontData::applySVGGlyphSelection):
* svg/SVGFontElement.cpp:
(WebCore::SVGFontElement::registerLigaturesInGlyphCache):
(WebCore::SVGKerningMap::insert):
(WebCore::stringMatchesUnicodeRange):
* svg/SVGPathByteStream.h:
(WebCore::SVGPathByteStream::begin):
(WebCore::SVGPathByteStream::end):
(WebCore::SVGPathByteStream::append):
(WebCore::SVGPathByteStream::clear):
(WebCore::SVGPathByteStream::isEmpty):
* svg/SVGPathUtilities.cpp:
(WebCore::appendSVGPathByteStreamFromSVGPathSeg):
* svg/animation/SMILTimeContainer.cpp:
(WebCore::SMILTimeContainer::setElapsed):
(WebCore::SMILTimeContainer::updateAnimations):
* svg/animation/SVGSMILElement.cpp:
(WebCore::SVGSMILElement::parseBeginOrEnd):
(WebCore::SVGSMILElement::connectConditions):
(WebCore::SVGSMILElement::disconnectConditions):
(WebCore::SVGSMILElement::notifyDependentsIntervalChanged):
(WebCore::SVGSMILElement::createInstanceTimesFromSyncbase):
* svg/graphics/filters/SVGFilterBuilder.cpp:
(WebCore::SVGFilterBuilder::clearResultsRecursive):
* svg/graphics/filters/SVGFilterBuilder.h:
(WebCore::SVGFilterBuilder::addBuiltinEffects):
* svg/properties/SVGAnimatedProperty.cpp:
(WebCore::SVGAnimatedProperty::~SVGAnimatedProperty):
* svg/properties/SVGListProperty.h:
(WebCore::SVGListProperty::detachListWrappersAndResize):
* svg/properties/SVGPathSegListPropertyTearOff.cpp:
(WebCore::SVGPathSegListPropertyTearOff::clearContextAndRoles):</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoresvgSVGAnimateElementBasecpp">trunk/Source/WebCore/svg/SVGAnimateElementBase.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGAnimatedPathcpp">trunk/Source/WebCore/svg/SVGAnimatedPath.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGAnimatedTypeAnimatorh">trunk/Source/WebCore/svg/SVGAnimatedTypeAnimator.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGAnimationElementcpp">trunk/Source/WebCore/svg/SVGAnimationElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGCursorElementcpp">trunk/Source/WebCore/svg/SVGCursorElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGDocumentExtensionscpp">trunk/Source/WebCore/svg/SVGDocumentExtensions.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGElementcpp">trunk/Source/WebCore/svg/SVGElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFontDatacpp">trunk/Source/WebCore/svg/SVGFontData.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFontElementcpp">trunk/Source/WebCore/svg/SVGFontElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGPathByteStreamh">trunk/Source/WebCore/svg/SVGPathByteStream.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGPathUtilitiescpp">trunk/Source/WebCore/svg/SVGPathUtilities.cpp</a></li>
<li><a href="#trunkSourceWebCoresvganimationSMILTimeContainercpp">trunk/Source/WebCore/svg/animation/SMILTimeContainer.cpp</a></li>
<li><a href="#trunkSourceWebCoresvganimationSVGSMILElementcpp">trunk/Source/WebCore/svg/animation/SVGSMILElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvggraphicsfiltersSVGFilterBuildercpp">trunk/Source/WebCore/svg/graphics/filters/SVGFilterBuilder.cpp</a></li>
<li><a href="#trunkSourceWebCoresvggraphicsfiltersSVGFilterBuilderh">trunk/Source/WebCore/svg/graphics/filters/SVGFilterBuilder.h</a></li>
<li><a href="#trunkSourceWebCoresvgpropertiesSVGAnimatedPropertycpp">trunk/Source/WebCore/svg/properties/SVGAnimatedProperty.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgpropertiesSVGListPropertyh">trunk/Source/WebCore/svg/properties/SVGListProperty.h</a></li>
<li><a href="#trunkSourceWebCoresvgpropertiesSVGPathSegListPropertyTearOffcpp">trunk/Source/WebCore/svg/properties/SVGPathSegListPropertyTearOff.cpp</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (184733 => 184734)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-05-21 20:27:43 UTC (rev 184733)
+++ trunk/Source/WebCore/ChangeLog        2015-05-21 22:45:13 UTC (rev 184734)
</span><span class="lines">@@ -1,3 +1,73 @@
</span><ins>+2015-05-21 Jake Nielsen <jacob_nielsen@apple.com>
+
+ r184718 and r184725 caused four tests to begin crashing
+
+ Unreviewed rollback.
+
+ Tests that started crashing:
+
+ svg/carto.net/textbox.svg svg/custom/tref-clone-crash.html svg/custom/use-animation-in-fill.html svg/custom/use-multiple-on-nested-disallowed-font.html
+
+ * svg/SVGAnimateElementBase.cpp:
+ (WebCore::propertyTypesAreConsistent):
+ * svg/SVGAnimatedPath.cpp:
+ (WebCore::SVGAnimatedPathAnimator::startAnimValAnimation):
+ * svg/SVGAnimatedTypeAnimator.h:
+ (WebCore::SVGAnimatedTypeAnimator::executeAction):
+ * svg/SVGAnimationElement.cpp:
+ (WebCore::SVGAnimationElement::parseAttribute):
+ * svg/SVGCursorElement.cpp:
+ (WebCore::SVGCursorElement::~SVGCursorElement):
+ (WebCore::SVGCursorElement::isSupportedAttribute):
+ * svg/SVGDocumentExtensions.cpp:
+ (WebCore::SVGDocumentExtensions::pauseAnimations):
+ (WebCore::SVGDocumentExtensions::unpauseAnimations):
+ (WebCore::SVGDocumentExtensions::dispatchSVGLoadEventToOutermostSVGElements):
+ (WebCore::SVGDocumentExtensions::isElementWithPendingResources):
+ (WebCore::SVGDocumentExtensions::removeElementFromPendingResources):
+ (WebCore::SVGDocumentExtensions::removeAllTargetReferencesForElement):
+ (WebCore::SVGDocumentExtensions::rebuildElements):
+ * svg/SVGElement.cpp:
+ (WebCore::populateAttributeNameToCSSPropertyIDMap):
+ (WebCore::populateAttributeNameToAnimatedPropertyTypeMap):
+ (WebCore::attributeNameToAnimatedPropertyTypeMap):
+ (WebCore::populateCSSPropertyWithSVGDOMNameToAnimatedPropertyTypeMap):
+ (WebCore::cssPropertyWithSVGDOMNameToAnimatedPropertyTypeMap):
+ (WebCore::hasLoadListener):
+ * svg/SVGFontData.cpp:
+ (WebCore::SVGFontData::applySVGGlyphSelection):
+ * svg/SVGFontElement.cpp:
+ (WebCore::SVGFontElement::registerLigaturesInGlyphCache):
+ (WebCore::SVGKerningMap::insert):
+ (WebCore::stringMatchesUnicodeRange):
+ * svg/SVGPathByteStream.h:
+ (WebCore::SVGPathByteStream::begin):
+ (WebCore::SVGPathByteStream::end):
+ (WebCore::SVGPathByteStream::append):
+ (WebCore::SVGPathByteStream::clear):
+ (WebCore::SVGPathByteStream::isEmpty):
+ * svg/SVGPathUtilities.cpp:
+ (WebCore::appendSVGPathByteStreamFromSVGPathSeg):
+ * svg/animation/SMILTimeContainer.cpp:
+ (WebCore::SMILTimeContainer::setElapsed):
+ (WebCore::SMILTimeContainer::updateAnimations):
+ * svg/animation/SVGSMILElement.cpp:
+ (WebCore::SVGSMILElement::parseBeginOrEnd):
+ (WebCore::SVGSMILElement::connectConditions):
+ (WebCore::SVGSMILElement::disconnectConditions):
+ (WebCore::SVGSMILElement::notifyDependentsIntervalChanged):
+ (WebCore::SVGSMILElement::createInstanceTimesFromSyncbase):
+ * svg/graphics/filters/SVGFilterBuilder.cpp:
+ (WebCore::SVGFilterBuilder::clearResultsRecursive):
+ * svg/graphics/filters/SVGFilterBuilder.h:
+ (WebCore::SVGFilterBuilder::addBuiltinEffects):
+ * svg/properties/SVGAnimatedProperty.cpp:
+ (WebCore::SVGAnimatedProperty::~SVGAnimatedProperty):
+ * svg/properties/SVGListProperty.h:
+ (WebCore::SVGListProperty::detachListWrappersAndResize):
+ * svg/properties/SVGPathSegListPropertyTearOff.cpp:
+ (WebCore::SVGPathSegListPropertyTearOff::clearContextAndRoles):
+
</ins><span class="cx"> 2015-05-21 Brent Fulgham <bfulgham@apple.com>
</span><span class="cx">
</span><span class="cx"> Scroll-snap points needs to be updated during programmatic scrolls
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGAnimateElementBasecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGAnimateElementBase.cpp (184733 => 184734)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGAnimateElementBase.cpp        2015-05-21 20:27:43 UTC (rev 184733)
+++ trunk/Source/WebCore/svg/SVGAnimateElementBase.cpp        2015-05-21 22:45:13 UTC (rev 184734)
</span><span class="lines">@@ -171,11 +171,12 @@
</span><span class="cx"> #ifndef NDEBUG
</span><span class="cx"> static inline bool propertyTypesAreConsistent(AnimatedPropertyType expectedPropertyType, const SVGElementAnimatedPropertyList& animatedTypes)
</span><span class="cx"> {
</span><del>- for (auto& type : animatedTypes) {
- for (auto& property : type.properties) {
- if (expectedPropertyType != property->animatedPropertyType()) {
</del><ins>+ SVGElementAnimatedPropertyList::const_iterator end = animatedTypes.end();
+ for (SVGElementAnimatedPropertyList::const_iterator it = animatedTypes.begin(); it != end; ++it) {
+ for (size_t i = 0; i < it->properties.size(); ++i) {
+ if (expectedPropertyType != it->properties[i]->animatedPropertyType()) {
</ins><span class="cx"> // This is the only allowed inconsistency. SVGAnimatedAngleAnimator handles both SVGAnimatedAngle & SVGAnimatedEnumeration for markers orient attribute.
</span><del>- if (expectedPropertyType == AnimatedAngle && property->animatedPropertyType() == AnimatedEnumeration)
</del><ins>+ if (expectedPropertyType == AnimatedAngle && it->properties[i]->animatedPropertyType() == AnimatedEnumeration)
</ins><span class="cx"> return true;
</span><span class="cx"> return false;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGAnimatedPathcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGAnimatedPath.cpp (184733 => 184734)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGAnimatedPath.cpp        2015-05-21 20:27:43 UTC (rev 184733)
+++ trunk/Source/WebCore/svg/SVGAnimatedPath.cpp        2015-05-21 22:45:13 UTC (rev 184734)
</span><span class="lines">@@ -50,13 +50,15 @@
</span><span class="cx">
</span><span class="cx"> Vector<RefPtr<SVGAnimatedPathSegListPropertyTearOff>> result;
</span><span class="cx">
</span><del>- for (auto& type : animatedTypes)
- result.append(castAnimatedPropertyToActualType<SVGAnimatedPathSegListPropertyTearOff>(type.properties[0].get()));
</del><ins>+ SVGElementAnimatedPropertyList::const_iterator end = animatedTypes.end();
+ for (SVGElementAnimatedPropertyList::const_iterator it = animatedTypes.begin(); it != end; ++it)
+ result.append(castAnimatedPropertyToActualType<SVGAnimatedPathSegListPropertyTearOff>(it->properties[0].get()));
</ins><span class="cx">
</span><span class="cx"> SVGElement::InstanceUpdateBlocker blocker(*property->contextElement());
</span><span class="cx">
</span><del>- for (auto& segment : result)
- segment->animationStarted(byteStream.get(), &baseValue);
</del><ins>+ size_t resultSize = result.size();
+ for (size_t i = 0; i < resultSize; ++i)
+ result[i]->animationStarted(byteStream.get(), &baseValue);
</ins><span class="cx">
</span><span class="cx"> return SVGAnimatedType::createPath(WTF::move(byteStream));
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGAnimatedTypeAnimatorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGAnimatedTypeAnimator.h (184733 => 184734)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGAnimatedTypeAnimator.h        2015-05-21 20:27:43 UTC (rev 184733)
+++ trunk/Source/WebCore/svg/SVGAnimatedTypeAnimator.h        2015-05-21 22:45:13 UTC (rev 184734)
</span><span class="lines">@@ -191,9 +191,10 @@
</span><span class="cx"> // FIXME: Can't use SVGElement::InstanceUpdateBlocker because of circular header dependency. Would be nice to untangle this.
</span><span class="cx"> setInstanceUpdatesBlocked(*animatedTypes[0].element, true);
</span><span class="cx">
</span><del>- for (auto& animatedType : animatedTypes) {
- ASSERT_WITH_SECURITY_IMPLICATION(whichProperty < animatedType.properties.size());
- AnimValType* property = castAnimatedPropertyToActualType<AnimValType>(animatedType.properties[whichProperty].get());
</del><ins>+ SVGElementAnimatedPropertyList::const_iterator end = animatedTypes.end();
+ for (SVGElementAnimatedPropertyList::const_iterator it = animatedTypes.begin(); it != end; ++it) {
+ ASSERT_WITH_SECURITY_IMPLICATION(whichProperty < it->properties.size());
+ AnimValType* property = castAnimatedPropertyToActualType<AnimValType>(it->properties[whichProperty].get());
</ins><span class="cx">
</span><span class="cx"> switch (action) {
</span><span class="cx"> case StartAnimationAction:
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGAnimationElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGAnimationElement.cpp (184733 => 184734)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGAnimationElement.cpp        2015-05-21 20:27:43 UTC (rev 184733)
+++ trunk/Source/WebCore/svg/SVGAnimationElement.cpp        2015-05-21 22:45:13 UTC (rev 184734)
</span><span class="lines">@@ -167,8 +167,8 @@
</span><span class="cx"> // and white space before and after semicolon separators, is allowed and will be ignored.
</span><span class="cx"> // http://www.w3.org/TR/SVG11/animate.html#ValuesAttribute
</span><span class="cx"> value.string().split(';', m_values);
</span><del>- for (auto& value : m_values)
- value = value.stripWhiteSpace();
</del><ins>+ for (unsigned i = 0; i < m_values.size(); ++i)
+ m_values[i] = m_values[i].stripWhiteSpace();
</ins><span class="cx">
</span><span class="cx"> updateAnimationMode();
</span><span class="cx"> return;
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGCursorElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGCursorElement.cpp (184733 => 184734)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGCursorElement.cpp        2015-05-21 20:27:43 UTC (rev 184733)
+++ trunk/Source/WebCore/svg/SVGCursorElement.cpp        2015-05-21 22:45:13 UTC (rev 184734)
</span><span class="lines">@@ -58,8 +58,9 @@
</span><span class="cx">
</span><span class="cx"> SVGCursorElement::~SVGCursorElement()
</span><span class="cx"> {
</span><del>- for (auto& client : m_clients)
- client->cursorElementRemoved();
</del><ins>+ HashSet<SVGElement*>::iterator end = m_clients.end();
+ for (HashSet<SVGElement*>::iterator it = m_clients.begin(); it != end; ++it)
+ (*it)->cursorElementRemoved();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> bool SVGCursorElement::isSupportedAttribute(const QualifiedName& attrName)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGDocumentExtensionscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGDocumentExtensions.cpp (184733 => 184734)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGDocumentExtensions.cpp        2015-05-21 20:27:43 UTC (rev 184733)
+++ trunk/Source/WebCore/svg/SVGDocumentExtensions.cpp        2015-05-21 22:45:13 UTC (rev 184734)
</span><span class="lines">@@ -101,14 +101,16 @@
</span><span class="cx">
</span><span class="cx"> void SVGDocumentExtensions::pauseAnimations()
</span><span class="cx"> {
</span><del>- for (auto& container : m_timeContainers)
- container->pauseAnimations();
</del><ins>+ auto end = m_timeContainers.end();
+ for (auto it = m_timeContainers.begin(); it != end; ++it)
+ (*it)->pauseAnimations();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void SVGDocumentExtensions::unpauseAnimations()
</span><span class="cx"> {
</span><del>- for (auto& container : m_timeContainers)
- container->unpauseAnimations();
</del><ins>+ auto end = m_timeContainers.end();
+ for (auto it = m_timeContainers.begin(); it != end; ++it)
+ (*it)->unpauseAnimations();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void SVGDocumentExtensions::dispatchSVGLoadEventToOutermostSVGElements()
</span><span class="lines">@@ -116,10 +118,12 @@
</span><span class="cx"> Vector<RefPtr<SVGSVGElement>> timeContainers;
</span><span class="cx"> timeContainers.appendRange(m_timeContainers.begin(), m_timeContainers.end());
</span><span class="cx">
</span><del>- for (auto& container : m_timeContainers) {
- if (!container->isOutermostSVGSVGElement())
</del><ins>+ auto end = timeContainers.end();
+ for (auto it = timeContainers.begin(); it != end; ++it) {
+ SVGSVGElement* outerSVG = (*it).get();
+ if (!outerSVG->isOutermostSVGSVGElement())
</ins><span class="cx"> continue;
</span><del>- container->sendSVGLoadEventIfPossible();
</del><ins>+ outerSVG->sendSVGLoadEventIfPossible();
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -167,7 +171,9 @@
</span><span class="cx"> // This algorithm takes time proportional to the number of pending resources and need not.
</span><span class="cx"> // If performance becomes an issue we can keep a counted set of elements and answer the question efficiently.
</span><span class="cx"> ASSERT(element);
</span><del>- for (auto& elements : m_pendingResources.values()) {
</del><ins>+ auto end = m_pendingResources.end();
+ for (auto it = m_pendingResources.begin(); it != end; ++it) {
+ PendingElements* elements = it->value.get();
</ins><span class="cx"> ASSERT(elements);
</span><span class="cx">
</span><span class="cx"> if (elements->contains(element))
</span><span class="lines">@@ -199,39 +205,43 @@
</span><span class="cx"> // Remove the element from pending resources.
</span><span class="cx"> if (!m_pendingResources.isEmpty() && element->hasPendingResources()) {
</span><span class="cx"> Vector<AtomicString> toBeRemoved;
</span><del>- for (auto& resource : m_pendingResources) {
- PendingElements* elements = resource.value.get();
</del><ins>+ auto end = m_pendingResources.end();
+ for (auto it = m_pendingResources.begin(); it != end; ++it) {
+ PendingElements* elements = it->value.get();
</ins><span class="cx"> ASSERT(elements);
</span><span class="cx"> ASSERT(!elements->isEmpty());
</span><span class="cx">
</span><span class="cx"> elements->remove(element);
</span><span class="cx"> if (elements->isEmpty())
</span><del>- toBeRemoved.append(resource.key);
</del><ins>+ toBeRemoved.append(it->key);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> clearHasPendingResourcesIfPossible(element);
</span><span class="cx">
</span><span class="cx"> // We use the removePendingResource function here because it deals with set lifetime correctly.
</span><del>- for (auto& resource : toBeRemoved)
- removePendingResource(resource);
</del><ins>+ auto vectorEnd = toBeRemoved.end();
+ for (auto it = toBeRemoved.begin(); it != vectorEnd; ++it)
+ removePendingResource(*it);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> // Remove the element from pending resources that were scheduled for removal.
</span><span class="cx"> if (!m_pendingResourcesForRemoval.isEmpty()) {
</span><span class="cx"> Vector<AtomicString> toBeRemoved;
</span><del>- for (auto& resource : m_pendingResourcesForRemoval) {
- PendingElements* elements = resource.value.get();
</del><ins>+ auto end = m_pendingResourcesForRemoval.end();
+ for (auto it = m_pendingResourcesForRemoval.begin(); it != end; ++it) {
+ PendingElements* elements = it->value.get();
</ins><span class="cx"> ASSERT(elements);
</span><span class="cx"> ASSERT(!elements->isEmpty());
</span><span class="cx">
</span><span class="cx"> elements->remove(element);
</span><span class="cx"> if (elements->isEmpty())
</span><del>- toBeRemoved.append(resource.key);
</del><ins>+ toBeRemoved.append(it->key);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> // We use the removePendingResourceForRemoval function here because it deals with set lifetime correctly.
</span><del>- for (auto& resource : toBeRemoved)
- removePendingResourceForRemoval(resource);
</del><ins>+ auto vectorEnd = toBeRemoved.end();
+ for (auto it = toBeRemoved.begin(); it != vectorEnd; ++it)
+ removePendingResourceForRemoval(*it);
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -307,16 +317,18 @@
</span><span class="cx"> {
</span><span class="cx"> Vector<SVGElement*> toBeRemoved;
</span><span class="cx">
</span><del>- for (auto& dependency : m_elementDependencies) {
- SVGElement* referencedElement = dependency.key;
- HashSet<SVGElement*>& referencingElements = *dependency.value;
</del><ins>+ auto end = m_elementDependencies.end();
+ for (auto it = m_elementDependencies.begin(); it != end; ++it) {
+ SVGElement* referencedElement = it->key;
+ HashSet<SVGElement*>& referencingElements = *it->value;
</ins><span class="cx"> referencingElements.remove(referencingElement);
</span><span class="cx"> if (referencingElements.isEmpty())
</span><span class="cx"> toBeRemoved.append(referencedElement);
</span><span class="cx"> }
</span><span class="cx">
</span><del>- for (auto& element : toBeRemoved)
- m_elementDependencies.remove(element);
</del><ins>+ auto vectorEnd = toBeRemoved.end();
+ for (auto it = toBeRemoved.begin(); it != vectorEnd; ++it)
+ m_elementDependencies.remove(*it);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void SVGDocumentExtensions::rebuildElements()
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGElement.cpp (184733 => 184734)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGElement.cpp        2015-05-21 20:27:43 UTC (rev 184733)
+++ trunk/Source/WebCore/svg/SVGElement.cpp        2015-05-21 22:45:13 UTC (rev 184734)
</span><span class="lines">@@ -150,8 +150,8 @@
</span><span class="cx"> &yAttr,
</span><span class="cx"> };
</span><span class="cx">
</span><del>- for (auto& name : attributeNames) {
- const AtomicString& localName = name->localName();
</del><ins>+ for (unsigned i = 0; i < WTF_ARRAY_LENGTH(attributeNames); ++i) {
+ const AtomicString& localName = attributeNames[i]->localName();
</ins><span class="cx"> map.add(localName.impl(), cssPropertyID(localName));
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -229,8 +229,8 @@
</span><span class="cx"> { word_spacingAttr, AnimatedLength },
</span><span class="cx"> };
</span><span class="cx">
</span><del>- for (auto& entry : table)
- map.add(entry.attributeName.impl(), entry.type);
</del><ins>+ for (unsigned i = 0; i < WTF_ARRAY_LENGTH(table); ++i)
+ map.add(table[i].attributeName.impl(), table[i].type);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static inline HashMap<QualifiedName::QualifiedNameImpl*, AnimatedPropertyType>& attributeNameToAnimatedPropertyTypeMap()
</span><span class="lines">@@ -263,8 +263,8 @@
</span><span class="cx"> { yAttr, AnimatedLength },
</span><span class="cx"> };
</span><span class="cx">
</span><del>- for (auto& entry : table)
- map.add(entry.attributeName.impl(), entry.type);
</del><ins>+ for (unsigned i = 0; i < WTF_ARRAY_LENGTH(table); ++i)
+ map.add(table[i].attributeName.impl(), table[i].type);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static inline HashMap<QualifiedName::QualifiedNameImpl*, AnimatedPropertyType>& cssPropertyWithSVGDOMNameToAnimatedPropertyTypeMap()
</span><span class="lines">@@ -639,8 +639,8 @@
</span><span class="cx">
</span><span class="cx"> for (element = element->parentOrShadowHostElement(); element; element = element->parentOrShadowHostElement()) {
</span><span class="cx"> const EventListenerVector& entry = element->getEventListeners(eventNames().loadEvent);
</span><del>- for (auto& listener : entry) {
- if (listener.useCapture)
</del><ins>+ for (size_t i = 0; i < entry.size(); ++i) {
+ if (entry[i].useCapture)
</ins><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFontDatacpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFontData.cpp (184733 => 184734)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFontData.cpp        2015-05-21 20:27:43 UTC (rev 184733)
+++ trunk/Source/WebCore/svg/SVGFontData.cpp        2015-05-21 22:45:13 UTC (rev 184734)
</span><span class="lines">@@ -161,17 +161,19 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> Vector<SVGGlyph> glyphs;
</span><del>- if (!altGlyphNames.isEmpty()) {
- for (auto& name : altGlyphNames)
- associatedFontElement->collectGlyphsForGlyphName(name, glyphs);
</del><ins>+ size_t altGlyphNamesSize = altGlyphNames.size();
+ if (altGlyphNamesSize) {
+ for (size_t index = 0; index < altGlyphNamesSize; ++index)
+ associatedFontElement->collectGlyphsForGlyphName(altGlyphNames[index], glyphs);
</ins><span class="cx">
</span><span class="cx"> // Assign the unicodeStringLength now that its known.
</span><del>- for (auto& glyph : glyphs)
- glyph.unicodeStringLength = run.length();
</del><ins>+ size_t glyphsSize = glyphs.size();
+ for (size_t i = 0; i < glyphsSize; ++i)
+ glyphs[i].unicodeStringLength = run.length();
</ins><span class="cx">
</span><span class="cx"> // Do not check alt glyphs for compatibility. Just return the first one.
</span><span class="cx"> // Later code will fail if we do not do this and the glyph is incompatible.
</span><del>- if (!glyphs.isEmpty()) {
</del><ins>+ if (glyphsSize) {
</ins><span class="cx"> SVGGlyph& svgGlyph = glyphs[0];
</span><span class="cx"> iterator.setLastGlyphName(svgGlyph.glyphName);
</span><span class="cx"> glyphData.glyph = svgGlyph.tableEntry;
</span><span class="lines">@@ -189,14 +191,16 @@
</span><span class="cx"> associatedFontElement->collectGlyphsForString(remainingTextInRun, glyphs);
</span><span class="cx"> }
</span><span class="cx">
</span><del>- for (auto& glyph : glyphs) {
- if (glyph.isPartOfLigature)
</del><ins>+ size_t glyphsSize = glyphs.size();
+ for (size_t i = 0; i < glyphsSize; ++i) {
+ SVGGlyph& svgGlyph = glyphs[i];
+ if (svgGlyph.isPartOfLigature)
</ins><span class="cx"> continue;
</span><del>- if (!isCompatibleGlyph(glyph, isVerticalText, language, arabicForms, currentCharacter, currentCharacter + glyph.unicodeStringLength))
</del><ins>+ if (!isCompatibleGlyph(svgGlyph, isVerticalText, language, arabicForms, currentCharacter, currentCharacter + svgGlyph.unicodeStringLength))
</ins><span class="cx"> continue;
</span><del>- iterator.setLastGlyphName(glyph.glyphName);
- glyphData.glyph = glyph.tableEntry;
- advanceLength = glyph.unicodeStringLength;
</del><ins>+ iterator.setLastGlyphName(svgGlyph.glyphName);
+ glyphData.glyph = svgGlyph.tableEntry;
+ advanceLength = svgGlyph.unicodeStringLength;
</ins><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFontElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFontElement.cpp (184733 => 184734)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFontElement.cpp        2015-05-21 20:27:43 UTC (rev 184733)
+++ trunk/Source/WebCore/svg/SVGFontElement.cpp        2015-05-21 22:45:13 UTC (rev 184734)
</span><span class="lines">@@ -86,7 +86,10 @@
</span><span class="cx"> // will not be able to find a glyph for "f", but handles the fallback
</span><span class="cx"> // character substitution properly through glyphDataForCharacter().
</span><span class="cx"> Vector<SVGGlyph> glyphs;
</span><del>- for (auto& unicode : ligatures) {
</del><ins>+ size_t ligaturesSize = ligatures.size();
+ for (size_t i = 0; i < ligaturesSize; ++i) {
+ const String& unicode = ligatures[i];
+
</ins><span class="cx"> unsigned unicodeLength = unicode.length();
</span><span class="cx"> ASSERT(unicodeLength > 1);
</span><span class="cx">
</span><span class="lines">@@ -171,23 +174,27 @@
</span><span class="cx"> svgKerning.unicodeName2 = kerningPair.unicodeName2;
</span><span class="cx"> svgKerning.glyphName2 = kerningPair.glyphName2;
</span><span class="cx">
</span><del>- for (auto& name : kerningPair.unicodeName1) {
- if (unicodeMap.contains(name))
- unicodeMap.get(name)->append(svgKerning);
</del><ins>+ HashSet<String>::const_iterator uIt = kerningPair.unicodeName1.begin();
+ const HashSet<String>::const_iterator uEnd = kerningPair.unicodeName1.end();
+ for (; uIt != uEnd; ++uIt) {
+ if (unicodeMap.contains(*uIt))
+ unicodeMap.get(*uIt)->append(svgKerning);
</ins><span class="cx"> else {
</span><span class="cx"> auto newVector = std::make_unique<SVGKerningVector>();
</span><span class="cx"> newVector->append(svgKerning);
</span><del>- unicodeMap.add(name, WTF::move(newVector));
</del><ins>+ unicodeMap.add(*uIt, WTF::move(newVector));
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><del>- for (auto& name : kerningPair.glyphName1) {
- if (glyphMap.contains(name))
- glyphMap.get(name)->append(svgKerning);
</del><ins>+ HashSet<String>::const_iterator gIt = kerningPair.glyphName1.begin();
+ const HashSet<String>::const_iterator gEnd = kerningPair.glyphName1.end();
+ for (; gIt != gEnd; ++gIt) {
+ if (glyphMap.contains(*gIt))
+ glyphMap.get(*gIt)->append(svgKerning);
</ins><span class="cx"> else {
</span><span class="cx"> auto newVector = std::make_unique<SVGKerningVector>();
</span><span class="cx"> newVector->append(svgKerning);
</span><del>- glyphMap.add(name, WTF::move(newVector));
</del><ins>+ glyphMap.add(*gIt, WTF::move(newVector));
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -202,8 +209,9 @@
</span><span class="cx">
</span><span class="cx"> if (!ranges.isEmpty()) {
</span><span class="cx"> UChar firstChar = unicodeString[0];
</span><del>- for (auto& range : ranges) {
- if (firstChar >= range.first && firstChar <= range.second)
</del><ins>+ const UnicodeRanges::const_iterator end = ranges.end();
+ for (UnicodeRanges::const_iterator it = ranges.begin(); it != end; ++it) {
+ if (firstChar >= it->first && firstChar <= it->second)
</ins><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGPathByteStreamh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGPathByteStream.h (184733 => 184734)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGPathByteStream.h        2015-05-21 20:27:43 UTC (rev 184733)
+++ trunk/Source/WebCore/svg/SVGPathByteStream.h        2015-05-21 22:45:13 UTC (rev 184734)
</span><span class="lines">@@ -58,10 +58,10 @@
</span><span class="cx"> DataIterator begin() { return m_data.begin(); }
</span><span class="cx"> DataIterator end() { return m_data.end(); }
</span><span class="cx"> void append(unsigned char byte) { m_data.append(byte); }
</span><del>- void append(SVGPathByteStream& other)
</del><ins>+ void append(SVGPathByteStream* other)
</ins><span class="cx"> {
</span><del>- for (auto stream : other)
- append(stream);
</del><ins>+ for (DataIterator it = other->begin(); it != other->end(); ++it)
+ append(*it);
</ins><span class="cx"> }
</span><span class="cx"> void clear() { m_data.clear(); }
</span><span class="cx"> bool isEmpty() const { return !m_data.size(); }
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGPathUtilitiescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGPathUtilities.cpp (184733 => 184734)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGPathUtilities.cpp        2015-05-21 20:27:43 UTC (rev 184733)
+++ trunk/Source/WebCore/svg/SVGPathUtilities.cpp        2015-05-21 22:45:13 UTC (rev 184734)
</span><span class="lines">@@ -155,7 +155,7 @@
</span><span class="cx"> parser->cleanup();
</span><span class="cx">
</span><span class="cx"> if (ok)
</span><del>- result->append(*appendedByteStream);
</del><ins>+ result->append(appendedByteStream.get());
</ins><span class="cx">
</span><span class="cx"> return ok;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoresvganimationSMILTimeContainercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/animation/SMILTimeContainer.cpp (184733 => 184734)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/animation/SMILTimeContainer.cpp        2015-05-21 20:27:43 UTC (rev 184733)
+++ trunk/Source/WebCore/svg/animation/SMILTimeContainer.cpp        2015-05-21 22:45:13 UTC (rev 184734)
</span><span class="lines">@@ -187,9 +187,11 @@
</span><span class="cx"> #ifndef NDEBUG
</span><span class="cx"> m_preventScheduledAnimationsChanges = true;
</span><span class="cx"> #endif
</span><del>- for (auto& animation : m_scheduledAnimations.values()) {
- for (auto& element : *animation)
- element->reset();
</del><ins>+ for (auto& it : m_scheduledAnimations) {
+ AnimationsVector* scheduled = it.value.get();
+ unsigned size = scheduled->size();
+ for (unsigned n = 0; n < size; n++)
+ scheduled->at(n)->reset();
</ins><span class="cx"> }
</span><span class="cx"> #ifndef NDEBUG
</span><span class="cx"> m_preventScheduledAnimationsChanges = false;
</span><span class="lines">@@ -272,7 +274,9 @@
</span><span class="cx"> sortByPriority(*scheduled, elapsed);
</span><span class="cx">
</span><span class="cx"> SVGSMILElement* resultElement = 0;
</span><del>- for (auto& animation : *scheduled) {
</del><ins>+ unsigned size = scheduled->size();
+ for (unsigned n = 0; n < size; n++) {
+ SVGSMILElement* animation = scheduled->at(n);
</ins><span class="cx"> ASSERT(animation->timeContainer() == this);
</span><span class="cx"> ASSERT(animation->targetElement());
</span><span class="cx"> ASSERT(animation->hasValidAttributeName());
</span><span class="lines">@@ -297,7 +301,8 @@
</span><span class="cx"> animationsToApply.append(resultElement);
</span><span class="cx"> }
</span><span class="cx">
</span><del>- if (animationsToApply.isEmpty()) {
</del><ins>+ unsigned animationsToApplySize = animationsToApply.size();
+ if (!animationsToApplySize) {
</ins><span class="cx"> #ifndef NDEBUG
</span><span class="cx"> m_preventScheduledAnimationsChanges = false;
</span><span class="cx"> #endif
</span><span class="lines">@@ -306,8 +311,8 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> // Apply results to target elements.
</span><del>- for (auto& animation : animationsToApply)
- animation->applyResultsToTarget();
</del><ins>+ for (unsigned i = 0; i < animationsToApplySize; ++i)
+ animationsToApply[i]->applyResultsToTarget();
</ins><span class="cx">
</span><span class="cx"> #ifndef NDEBUG
</span><span class="cx"> m_preventScheduledAnimationsChanges = false;
</span></span></pre></div>
<a id="trunkSourceWebCoresvganimationSVGSMILElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/animation/SVGSMILElement.cpp (184733 => 184734)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/animation/SVGSMILElement.cpp        2015-05-21 20:27:43 UTC (rev 184733)
+++ trunk/Source/WebCore/svg/animation/SVGSMILElement.cpp        2015-05-21 22:45:13 UTC (rev 184734)
</span><span class="lines">@@ -421,14 +421,14 @@
</span><span class="cx"> if (beginOrEnd == End)
</span><span class="cx"> m_hasEndEventConditions = false;
</span><span class="cx"> HashSet<double> existing;
</span><del>- for (auto& time : timeList)
- existing.add(time.time().value());
</del><ins>+ for (unsigned n = 0; n < timeList.size(); ++n)
+ existing.add(timeList[n].time().value());
</ins><span class="cx"> Vector<String> splitString;
</span><span class="cx"> parseString.split(';', splitString);
</span><del>- for (auto& string : splitString) {
- SMILTime value = parseClockValue(string);
</del><ins>+ for (unsigned n = 0; n < splitString.size(); ++n) {
+ SMILTime value = parseClockValue(splitString[n]);
</ins><span class="cx"> if (value.isUnresolved())
</span><del>- parseCondition(string, beginOrEnd);
</del><ins>+ parseCondition(splitString[n], beginOrEnd);
</ins><span class="cx"> else if (!existing.contains(value.value()))
</span><span class="cx"> timeList.append(SMILTimeWithOrigin(value, SMILTimeWithOrigin::ParserOrigin));
</span><span class="cx"> }
</span><span class="lines">@@ -518,7 +518,8 @@
</span><span class="cx"> if (m_conditionsConnected)
</span><span class="cx"> disconnectConditions();
</span><span class="cx"> m_conditionsConnected = true;
</span><del>- for (auto& condition : m_conditions) {
</del><ins>+ for (unsigned n = 0; n < m_conditions.size(); ++n) {
+ Condition& condition = m_conditions[n];
</ins><span class="cx"> if (condition.m_type == Condition::EventBase) {
</span><span class="cx"> ASSERT(!condition.m_syncbase);
</span><span class="cx"> Element* eventBase = eventBaseFor(condition);
</span><span class="lines">@@ -546,7 +547,8 @@
</span><span class="cx"> if (!m_conditionsConnected)
</span><span class="cx"> return;
</span><span class="cx"> m_conditionsConnected = false;
</span><del>- for (auto& condition : m_conditions) {
</del><ins>+ for (unsigned n = 0; n < m_conditions.size(); ++n) {
+ Condition& condition = m_conditions[n];
</ins><span class="cx"> if (condition.m_type == Condition::EventBase) {
</span><span class="cx"> ASSERT(!condition.m_syncbase);
</span><span class="cx"> if (!condition.m_eventListener)
</span><span class="lines">@@ -1124,7 +1126,9 @@
</span><span class="cx"> return;
</span><span class="cx"> loopBreaker.add(this);
</span><span class="cx">
</span><del>- for (auto& dependent : m_timeDependents) {
</del><ins>+ TimeDependentSet::iterator end = m_timeDependents.end();
+ for (TimeDependentSet::iterator it = m_timeDependents.begin(); it != end; ++it) {
+ SVGSMILElement* dependent = *it;
</ins><span class="cx"> dependent->createInstanceTimesFromSyncbase(this, newOrExisting);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -1135,7 +1139,8 @@
</span><span class="cx"> {
</span><span class="cx"> // FIXME: To be really correct, this should handle updating exising interval by changing
</span><span class="cx"> // the associated times instead of creating new ones.
</span><del>- for (auto& condition : m_conditions) {
</del><ins>+ for (unsigned n = 0; n < m_conditions.size(); ++n) {
+ Condition& condition = m_conditions[n];
</ins><span class="cx"> if (condition.m_type == Condition::Syncbase && condition.m_syncbase == syncbase) {
</span><span class="cx"> ASSERT(condition.m_name == "begin" || condition.m_name == "end");
</span><span class="cx"> // No nested time containers in SVG, no need for crazy time space conversions. Phew!
</span></span></pre></div>
<a id="trunkSourceWebCoresvggraphicsfiltersSVGFilterBuildercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/graphics/filters/SVGFilterBuilder.cpp (184733 => 184734)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/graphics/filters/SVGFilterBuilder.cpp        2015-05-21 20:27:43 UTC (rev 184733)
+++ trunk/Source/WebCore/svg/graphics/filters/SVGFilterBuilder.cpp        2015-05-21 22:45:13 UTC (rev 184734)
</span><span class="lines">@@ -95,8 +95,10 @@
</span><span class="cx">
</span><span class="cx"> effect->clearResult();
</span><span class="cx">
</span><del>- for (auto& reference : effectReferences(effect))
- clearResultsRecursive(reference);
</del><ins>+ HashSet<FilterEffect*>& effectReferences = this->effectReferences(effect);
+ HashSet<FilterEffect*>::iterator end = effectReferences.end();
+ for (HashSet<FilterEffect*>::iterator it = effectReferences.begin(); it != end; ++it)
+ clearResultsRecursive(*it);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoresvggraphicsfiltersSVGFilterBuilderh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/graphics/filters/SVGFilterBuilder.h (184733 => 184734)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/graphics/filters/SVGFilterBuilder.h        2015-05-21 20:27:43 UTC (rev 184733)
+++ trunk/Source/WebCore/svg/graphics/filters/SVGFilterBuilder.h        2015-05-21 22:45:13 UTC (rev 184734)
</span><span class="lines">@@ -62,8 +62,9 @@
</span><span class="cx"> private:
</span><span class="cx"> inline void addBuiltinEffects()
</span><span class="cx"> {
</span><del>- for (auto& effect : m_builtinEffects.values())
- m_effectReferences.add(effect, FilterEffectSet());
</del><ins>+ HashMap<AtomicString, RefPtr<FilterEffect>>::iterator end = m_builtinEffects.end();
+ for (HashMap<AtomicString, RefPtr<FilterEffect>>::iterator iterator = m_builtinEffects.begin(); iterator != end; ++iterator)
+ m_effectReferences.add(iterator->value, FilterEffectSet());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> HashMap<AtomicString, RefPtr<FilterEffect>> m_builtinEffects;
</span></span></pre></div>
<a id="trunkSourceWebCoresvgpropertiesSVGAnimatedPropertycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/properties/SVGAnimatedProperty.cpp (184733 => 184734)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/properties/SVGAnimatedProperty.cpp        2015-05-21 20:27:43 UTC (rev 184733)
+++ trunk/Source/WebCore/svg/properties/SVGAnimatedProperty.cpp        2015-05-21 22:45:13 UTC (rev 184734)
</span><span class="lines">@@ -37,9 +37,10 @@
</span><span class="cx"> SVGAnimatedProperty::~SVGAnimatedProperty()
</span><span class="cx"> {
</span><span class="cx"> // Remove wrapper from cache.
</span><del>- for (auto& cache : *animatedPropertyCache()) {
- if (cache.value == this) {
- animatedPropertyCache()->remove(cache.key);
</del><ins>+ Cache& cache = *animatedPropertyCache();
+ for (auto it = cache.begin(), end = cache.end(); it != end; ++it) {
+ if (it->value == this) {
+ cache.remove(it);
</ins><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoresvgpropertiesSVGListPropertyh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/properties/SVGListProperty.h (184733 => 184734)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/properties/SVGListProperty.h        2015-05-21 20:27:43 UTC (rev 184733)
+++ trunk/Source/WebCore/svg/properties/SVGListProperty.h        2015-05-21 22:45:13 UTC (rev 184734)
</span><span class="lines">@@ -62,8 +62,9 @@
</span><span class="cx"> {
</span><span class="cx"> // See SVGPropertyTearOff::detachWrapper() for an explanation about what's happening here.
</span><span class="cx"> ASSERT(wrappers);
</span><del>- for (auto& item : *wrappers) {
- if (item)
</del><ins>+ unsigned size = wrappers->size();
+ for (unsigned i = 0; i < size; ++i) {
+ if (ListItemTearOff* item = wrappers->at(i).get())
</ins><span class="cx"> item->detachWrapper();
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoresvgpropertiesSVGPathSegListPropertyTearOffcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/properties/SVGPathSegListPropertyTearOff.cpp (184733 => 184734)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/properties/SVGPathSegListPropertyTearOff.cpp        2015-05-21 20:27:43 UTC (rev 184733)
+++ trunk/Source/WebCore/svg/properties/SVGPathSegListPropertyTearOff.cpp        2015-05-21 22:45:13 UTC (rev 184734)
</span><span class="lines">@@ -30,7 +30,9 @@
</span><span class="cx"> void SVGPathSegListPropertyTearOff::clearContextAndRoles()
</span><span class="cx"> {
</span><span class="cx"> ASSERT(m_values);
</span><del>- for (auto& item : *m_values) {
</del><ins>+ unsigned size = m_values->size();
+ for (unsigned i = 0; i < size; ++i) {
+ ListItemType item = m_values->at(i);
</ins><span class="cx"> static_cast<SVGPathSegWithContext*>(item.get())->setContextAndRole(0, PathSegUndefinedRole);
</span><span class="cx"> }
</span><span class="cx"> }
</span></span></pre>
</div>
</div>
</body>
</html>